Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengakses Keputusan Janji Perantaraan dalam Rantaian Janji JavaScript?

Bagaimanakah Saya Boleh Mengakses Keputusan Janji Perantaraan dalam Rantaian Janji JavaScript?

DDD
DDDasal
2025-01-02 13:23:40547semak imbas

How Can I Access Intermediate Promise Results in a JavaScript Promise Chain?

Mengakses Keputusan Perantaraan Janji dalam Rantaian Janji

Dalam rantai janji, setiap panggilan balik menerima hasil janji sebelumnya. Walau bagaimanapun, mengakses hasil perantaraan dalam rantaian boleh mencabar.

Memutuskan Rantaian

Untuk mengakses hasil perantaraan, pertimbangkan untuk membahagikan rantaian kepada segmen yang lebih kecil. Daripada melampirkan panggilan balik pada satu janji, lampirkan berbilang panggilan balik pada janji yang sama. Ini menyediakan akses kepada nilai hasil apabila diperlukan.

Promise Combinators

Perpustakaan Promise menyediakan penggabung seperti Promise.all(), yang menggabungkan berbilang janji menjadi janji tunggal yang diselesaikan dengan tatasusunan yang mengandungi keputusan setiap satu janji.

Contoh

Andaikan anda mempunyai janji A dan B, dan anda ingin mengakses hasil janji A dalam panggilan balik untuk janji B:

function getExample() {
    var a = promiseA(…);
    var b = a.then(function(resultA) {
        // some processing
        return promiseB(…);
    });
    return Promise.all([a, b]).then(function([resultA, resultB]) {
        // more processing
        return // something using both resultA and resultB
    });
}

Dalam ES6, anda boleh menggunakan penstrukturan tatasusunan untuk mengakses keputusan dalam panggilan balik terakhir. Dalam ES5, anda boleh menggunakan kaedah pembantu .spread() atau Promise.join() untuk sintaks yang lebih bersih.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Keputusan Janji Perantaraan dalam Rantaian Janji JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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