javascript - Promise.all() 基于返回 Promises 的函数

标签 javascript promise

我正在尝试将 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 采用 PromiseArray

由于您的函数返回 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/

相关文章:

javascript - 链接 RSVP promise 的正确方法

JavaScript:Promise.All() 和 Async/Await 以及 Map()

javascript - 将 Promise 与事件发射器一起使用

javascript - 如何在 NodeJS mongodb 驱动程序版本 2.2 中使用 Promise

javascript - 如何使用 Windows.Open 在我的网站上方打开一个新网页,同时使背景变暗

javascript - 尝试根据用户输入获取总量

javascript - 以多页分页打印所有数据

javascript - 无法在 Raphael 中缩放多条路径?

javascript - Javascript 中的金融计算器运行速度比 Excel 慢得多

javascript - map() 与 async 与 promise.all()