访问 .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中文网其他相关文章!