美文网首页
循环串行异步 Promise

循环串行异步 Promise

作者: 书SHU | 来源:发表于2018-05-09 14:14 被阅读78次

有时候会有这一种需要,需要在循环中执行一系列操作。但是循环的每次迭代的操作是异步的,此时如何实现“异步串行”呢?

先看一下例子,在没有循环时,如果串行:

new Promise((resolve, reject) => {
    new Promise((resolve, reject) => {
        // ... 一些异步操作
        return resolve(data)  // 返回这个 promise
    })
})
.then(() => {
    ...
})
.then(...)
.then(...)

转换为循环:
(思路为,每次 for 时候的 promise 为上一次迭代的 promise.then,即可串联起来)

function runSerial(lists, asyncTask) {
    let promise = Promise.resolve()
        _.each(lists, (i) => {
        promise = promise.then(() => asyncTask(i))
    })
    return promise
}

调用方法:

runSerial(self.apps, (app) => {
    const data = {
        ...
    }

    return new Promise((resolve, reject) => {
        self.$http.post(url, data).then(({data: {status, data}}) => {
            // ...
            resolve()
        })
    })
}).finally((res) => {
    ...
})

相关文章

  • 循环串行异步 Promise

    有时候会有这一种需要,需要在循环中执行一系列操作。但是循环的每次迭代的操作是异步的,此时如何实现“异步串行”呢? ...

  • [iOS][OC] 看 BRYSerialAnimationQu

    背景 上文 《自定义 Promise 处理串行的异步操作》 分析了串行的异步操作的自定义 Promise 处理。P...

  • ES6的学习(下)

    promise:异步操作同步化 同步 -- 串行 简单、方便异步 -- 并行 性能高、体验好promise的是...

  • 循环多个 Promise 异步函数

    了解Promise 循环多个 Promise 异步函数

  • promise的基本用法以及实现原理

    1.promise是什么? promise是异步编程的一种解决方案,解决多个异步方法串行的问题,比如回调地狱等.所...

  • 2022-11-17 08多线程

    GCD 同步串行 死锁!,会导致队列引起循环等待 没有问题 同步并发 答案:12345 产生死锁 异步串行 异步并...

  • JavaScript之异步

    一、事件循环 二、AJAX:定义,总结 三、Promise:定义,串行,并行,总结 四、generator生成器函...

  • 2020-02-17 Promise例子

    多重promise(串行) 输出的结果 promise中的catch

  • iOS多线程小结

    同步异步串行并行 同步串行:不开启线程 同步并行:不开启线程 异步串行:最多开启一个线程 异步并行:开启线程 同步...

  • 多线程GCD的使用

    一、同步/异步、串行/并行的区别 1.同步/异步 同步/异步是指线程与线程之间的关系。 2.串行/并行 串行、并行...

网友评论

      本文标题:循环串行异步 Promise

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