Cara Menangani Ralat dalam Promise.all dengan Anggun: Panduan Praktikal

DDD
Lepaskan: 2024-10-28 08:54:29
asal
828 orang telah melayarinya

How to Gracefully Handle Errors in Promise.all: A Practical Guide

Mengendalikan Ralat dalam Promise.all: Pendekatan Praktikal

Promise.all ialah alat yang berkuasa untuk menggabungkan berbilang tugas tak segerak. Walau bagaimanapun, ia mengendalikan ralat secara berbeza daripada janji individu, sering membawa kepada kekeliruan. Artikel ini mengupas lebih mendalam tentang tingkah laku Promise.all dan membentangkan penyelesaian praktikal untuk menangani ralat dengan berkesan.

Promise.all vs. Individual Promise

Promise.all take pelbagai janji dan mengembalikan janji yang diselesaikan sebaik sahaja semua janji input selesai. Tidak seperti janji individu, Promise.all menyelesaikan dengan pelbagai nilai atau menolak dengan satu ralat. Ini bermakna jika mana-mana satu daripada janji input yang ditolak, Promise.all akan menolak serta-merta dengan kesilapan itu, tanpa mengira status janji yang tinggal.

Menangkap Ralat Janji Individu

Untuk menangkap ralat dalam janji individu dalam Promise.all, adalah menarik untuk menggunakan .catch pada setiap janji. Walau bagaimanapun, pendekatan ini tidak berkesan kerana Promise.all masih akan menolak dengan ralat pertama yang ditemui, membuang ralat daripada janji-janji lain.

Sebaliknya, penyelesaian yang lebih mantap ialah menggunakan .catch on the Promise.all memanggil dirinya sendiri. Dengan mengendalikan ralat pada tahap ini, anda boleh mengakses tatasusunan yang mengandungi gabungan nilai daripada janji yang diselesaikan dan objek ralat daripada janji yang ditolak.

Di bawah ialah contoh pelaksanaan pendekatan ini:

const arrayOfPromises = state.routes.map(route => route.handler.promiseHandler());

Promise.all(arrayOfPromises)
  .then(arrayResolved => {
    // Handle array of resolved promises and errors here...
  })
  .catch(err => {
    console.error(err); // Log the composite error
  });
Salin selepas log masuk

Pengendalian Janji Tersuai

Jika gelagat lalai Promise.all tidak sesuai untuk aplikasi anda, anda boleh mempertimbangkan untuk melaksanakan penyelesaian pengendalian janji tersuai. Satu pendekatan yang popular ialah mencipta fungsi Promise.when yang menyelesaikan hanya selepas semua janji telah diselesaikan atau ditolak. Walau bagaimanapun, pendekatan ini bukan sebahagian daripada spesifikasi ES6 pada masa ini.

Kesimpulan

Mengendalikan ralat dalam Promise.semuanya memerlukan pemahaman yang bernuansa tentang kelakuannya. Dengan memanfaatkan .catch pada panggilan Promise.all, anda boleh menangkap ralat daripada janji individu sambil mengekalkan nilai yang diselesaikan. Pendekatan ini memberikan lebih fleksibiliti dan kawalan ke atas resolusi janji, membolehkan anda mengendalikan tugas tak segerak dengan berkesan.

Atas ialah kandungan terperinci Cara Menangani Ralat dalam Promise.all dengan Anggun: Panduan Praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!