美文网首页前端开发笔记
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