美文网首页前端开发笔记
async-await 同时触发(等待)多个异步操作

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

作者: 后除 | 来源:发表于2018-10-13 11:37 被阅读4次

使用 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
})()

相关文章

网友评论

    本文标题:async-await 同时触发(等待)多个异步操作

    本文链接:https://www.haomeiwen.com/subject/bekoaftx.html