async-await 同时触发(等待)多个异步操作

使用 async-await 等待异步操作完成的时候,如果前后两个异步操作不存在依赖关系,同时触发应该是更好的方案。

因为 await 后面必须跟一个 Promise 实例,于是可以用 Promise.all() 这个方法把多个 Promise 实例合并成一个 Promise 实例。Promise.all() 接收一个部署了 Iterator 的对象(例如:数组、Set),每个成员都必须是 Promise 实例,且只有当每个成员的状态都是 fulfilled 的时候,总实例的状态才是 fulfilled,否则是 rejected

Promise.all() 用法示例:

const wait = ms => new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log(`wait ${ms}ms`)
        resolve()
    }, ms)
})
const PA = Promise.all([wait(3000), wait(1000), wait(2000)])
// 依次打印:wait 1000ms wait 2000ms wait 3000ms

async-await 同时触发多个异步操作示例:

const wait = ms => new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log(`wait ${ms}ms`)
        resolve()
    }, ms)
})
;(async () => {
    await Promise.all([wait(3000), wait(1000), wait(2000)])
    // 依次打印:wait 1000ms wait 2000ms wait 3000ms
})()

发表评论

您的电子邮箱地址不会被公开。