Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengakses Keputusan Janji Perantaraan dalam Rantaian `.then()` JavaScript?

Bagaimanakah Saya Boleh Mengakses Keputusan Janji Perantaraan dalam Rantaian `.then()` JavaScript?

DDD
DDDasal
2024-12-26 00:08:09205semak imbas

How Can I Access Intermediate Promise Results in a JavaScript `.then()` Chain?

Mengakses Keputusan Janji Pertengahan dalam Rantaian .then()

Promises menawarkan cara yang mudah untuk mengurus operasi tak segerak dalam kod anda. Walau bagaimanapun, kadangkala anda mungkin menghadapi senario di mana anda perlu mengakses hasil janji perantaraan dalam rantaian .then().

Cabaran

Pertimbangkan rantai janji berikut:

function getExample() {
    return promiseA(…).then(function(resultA) {
        // Some processing
        return promiseB(…);
    }).then(function(resultB) {
        // More processing
        return // How do I gain access to resultA here?
    });
}

Dalam rantaian ini, hasil promiseA() tidak boleh diakses dalam panggilan balik .then() untuk janjiB(). Ini boleh menjadi masalah jika anda perlu menggunakan kedua-dua keputusan dalam pengiraan akhir anda.

Memutuskan Rantaian

Untuk mengatasi had ini, anda boleh memutuskan rantaian kepada berasingan keping dan gunakan penggabung janji yang disediakan oleh pustaka anda. Pertimbangkan pemfaktoran semula berikut:

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
    });
}

Pendekatan ini menggunakan Promise.all untuk menunggu kedua-dua janji diselesaikan sebelum menyerahkan keputusan kepada panggilan balik .then() muktamad.

Lain-lain Pilihan

  • Memusnahkan: ES6 membolehkan anda memusnahkan tatasusunan yang dikembalikan oleh Promise.all kepada pembolehubah individu.
  • Spread Operator: ES6 juga menyokong operator spread, yang boleh digunakan untuk menyebarkan elemen tatasusunan ke dalam panggilan balik hujah.
  • Kaedah Sertai (Bluebird): Bluebird menyediakan fungsi gabungan khusus yang memudahkan gabungan berbilang janji menjadi satu hasil.

Dengan memutuskan rantaian anda dan menggunakan alternatif ini, anda boleh mengakses hasil janji perantaraan dengan mudah dan mengekalkan struktur kod yang jelas dan modular.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Keputusan Janji Perantaraan dalam Rantaian `.then()` 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