首頁 > web前端 > js教程 > 如何存取 JavaScript Promise 鏈中的中間 Promise 結果?

如何存取 JavaScript Promise 鏈中的中間 Promise 結果?

Barbara Streisand
發布: 2024-12-24 06:39:17
原創
220 人瀏覽過

How Can I Access Intermediate Promise Results in JavaScript Promise Chains?

管理Promise 鏈中的中間結果

問題:

問題:
function getExample() {
    return promiseA(…).then(function(resultA) {
        // Processing
        return promiseB(…);
    }).then(function(resultB) {
        // How can we access resultA here?
    });
}
登入後複製

問題:

它在最終回調中訪問中間承諾結果可能具有挑戰性。在下面的範例中,我們如何在promiseB的回調中存取promiseA的結果?
function getExample() {
    var a = promiseA(…);
    var b = a.then(function(resultA) {
        // Processing
        return promiseB(…);
    });
    return Promise.all([a, b]).then(function([resultA, resultB]) {
        // Processing using both resultA and resultB
        return …;
    });
}
登入後複製

解決方案:打破鏈條

訪問中間結果對於承諾鏈,最好將其分解為單獨的組件。這允許您將多個回調附加到同一個承諾,在需要時存取解析的值。這是程式碼的改進版本:

…
return Promise.all([a, b]).then(.spread(function(resultA, resultB) { … });
登入後複製
此方法利用 Promise.all() 方法建立鏈中所有 Promise 的陣列。然後,我們將另一個 then() 回呼連結到 Promise.all() 結果,傳遞一個接收解析值陣列的函數。這使得我們可以在最終回調中輕鬆存取 resultA 和 resultB。

…
return Promise.join(a, b, function(resultA, resultB) { … });
登入後複製
替代解決方案:

在ES5 中,可以使用.spread() 方法來實現類似的功能:Bluebird 提供了專用的join()方法來簡化此過程進一步:透過打破鏈條並使用適當的 Promise 組合器,您可以優雅地存取和操作中間 Promise 結果,確保清晰高效的程式碼結構。

以上是如何存取 JavaScript Promise 鏈中的中間 Promise 結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板