Bagaimana Anda Boleh Menangani Kesilapan Janji Individu dalam Rantaian Promise.all?

DDD
Lepaskan: 2024-11-02 06:33:29
asal
912 orang telah melayarinya

How Can You Handle Individual Promise Errors Within a Promise.all Chain?

Ralat Pengendalian dalam Promise.all

Apabila bekerja dengan pelbagai Promise, Promise.all membenarkan penyelesaian serentak mereka. Walau bagaimanapun, jika ralat berlaku dalam salah satu Janji, keseluruhan rantaian ditolak, mengaburkan resolusi lain yang berjaya. Artikel ini menangani cabaran untuk mengendalikan ralat Janji individu secara berkesan dalam rantai Promise.all.

Promise.all mematuhi prinsip "semua atau tiada apa-apa". Ia sama ada menyelesaikan dengan tatasusunan yang terdiri daripada nilai yang diselesaikan daripada semua Janji atau menolak sebaik sahaja Janji tunggal menghadapi ralat. Akibatnya, sebarang ralat yang mungkin berlaku dalam Janji lain tidak disedari.

Untuk mengendalikan ralat Janji individu, sesetengah perpustakaan menawarkan alternatif seperti Promise.when, yang menunggu penyelesaian atau penolakan semua Janji dalam tatasusunan. Walau bagaimanapun, kami akan menumpukan pada pendekatan yang lebih biasa menggunakan Promise.all asli JavaScript.

Dalam kod yang disediakan, pengguna cuba menambah pernyataan tangkapan untuk memintas ralat Promise individu, tetapi blok tangkapan, malangnya, tidak jangan aktifkan. Berikut ialah versi kod yang diubah suai yang sepatutnya menangani isu ini:

existingPromiseChain = existingPromiseChain.then(function() {
    var arrayOfPromises = state.routes.map(function(route){
        return route.handler.promiseHandler()
            .then(function(data) {
                return data;
            })
            .catch(function(err) {
                return err;
            });
    });
    return Promise.all(arrayOfPromises)
});

existingPromiseChain.then(function(arrayResolved) {
    // Process resolved values or errors from the Promises
});

// Always terminate the promise chain with a catch to capture any potential errors
.catch(function(err) {
    console.log(err.message); // Log error message if any coding error occurred
});
Salin selepas log masuk

Kod yang disemak ini membalut setiap Promise (route.handler.promiseHandler()) dengan blok then/catch. Sekiranya berlaku ralat, blok tangkapan mengembalikan objek ralat, yang kemudiannya disertakan dalam tatasusunan yang Promise.all selesaikan.

Dengan mematuhi gelagat Promise.all, semua-atau-tiada apa-apa, pendekatan ini membolehkan kami mengendalikan kesilapan Janji individu dengan anggun sambil masih mendapat manfaat daripada penyelesaian janji serentak. Oleh itu, pembangun dengan yakin boleh mengendalikan ralat Promise dalam aplikasi mereka tanpa kehilangan kelebihan yang ditawarkan oleh Promise.all.

Atas ialah kandungan terperinci Bagaimana Anda Boleh Menangani Kesilapan Janji Individu dalam Rantaian Promise.all?. 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!