我正在尝试将 Promise.all()
与封装在函数上的 Promise 一起使用:
function fn1(val){
return new Promise((resolve, reject) => {
/* promise body */
});
}
function fn2(val){
return new Promise((resolve, reject) => {
/* promise body */
});
}
fn1(data)
.then((val) => fn2(val))
.catch((error) => alert(error)
Promise.all([fn1, fn2]).then(() => alert("Done!"))
这似乎不可能,因为 Promise.all([fn1, fn2])
直接执行,而不是等待 promise 成功。
我知道我可以将另一个 .then()
链接到 thenable 结构,但我想知道是否有任何方法可以使用 Promise.all( )
在 Promise 包含在函数中的上下文中。
最佳答案
Promise.all
采用 Promise
的 Array
。
由于您的函数返回 Promises,因此您可以在声明 Promise.all
数组时调用函数,并且它们将被 Promises替换。
// error handling (reject/catch) omitted for brevity.
function fn1 (val) {
return new Promise(resolve => {
resolve('foo ' + val)
})
}
function fn2 (val) {
return new Promise(resolve => {
resolve('bar ' + val)
})
}
Promise.all([fn1(1), fn2(2)])
.then(result => console.log(result))
关于javascript - Promise.all() 基于返回 Promises 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53683488/