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

如何存取 JavaScript `.then()` 鏈中的中間 Promise 結果?

DDD
DDD原創
2024-12-26 00:08:09205瀏覽

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

存取 .then() 鏈中的中間 Promise 結果

Promise 提供了一種管理程式碼中非同步操作的便捷方法。但是,有時您可能會遇到需要存取 .then() 鏈中的中間 Promise 結果的情況。

挑戰

考慮以下Promise 鏈:

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

在此鏈中,promiseA() 的結果無法在.then() 回調中訪問承諾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
    });
}

此方法使用 Promise.all 等待兩個 Promise 解析,然後將結果傳遞給最終的 .then() 回呼。

其他選項

  • 解構:ES6 讓您將 Promise.all 傳回的數組解構為單獨的變數。
  • 擴充運算子:ES6 也支援擴充運算符,可用來將陣列元素擴展到回呼中
  • Join 方法(Bluebird): Bluebird 提供了專用的join 函數,可以簡化將多個Promise 轉換為一個結果。

透過打破鏈條並使用這些替代方案,您可以輕鬆存取中間 Promise 結果並維護清晰且模組化的程式碼結構。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn