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
Lepaskan: 2024-12-26 00:08:09
asal
204 orang telah melayarinya

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?
    });
}
Salin selepas log masuk

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
    });
}
Salin selepas log masuk

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!

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