存取 .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() 回呼。
其他選項
透過打破鏈條並使用這些替代方案,您可以輕鬆存取中間 Promise 結果並維護清晰且模組化的程式碼結構。
以上是如何存取 JavaScript `.then()` 鏈中的中間 Promise 結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!