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
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!