美文网首页
循环拼接Promise链式调用

循环拼接Promise链式调用

作者: 欢西西西 | 来源:发表于2022-11-01 18:57 被阅读0次

一、连续调用

假设有一个参数数组data = [1, 2, 3, 4],每项都需要组织成一个请求发送,每项发送完之后发送下一项(无论发送成功或失败):

先组织一个发送数据的函数postData

const postData = item => {
    return new Promise((resolve) => {
        setTimeout(() => {
            if (Math.random() > 0.5) {
                console.log(item, '发送成功');
            } else {
                console.log(item, '发送失败');
            }
            resolve();
        }, 1000);
    });
};

1. 使用reduce拼接

data.reduce((c, n) => {
    return c.then(() => postData(n));
}, Promise.resolve());

2. 使用回调 和 递归

function startPostData(index) {
    postData(data[index]).then(() => {
        if (index === data.length - 1) {
            return;
        }
        startPostData(index + 1);
    });
}
startPostData(0);

3. 使用async/await 和 递归

async function postDataByLoop() {
    for (let item of data) {
        await postData(item);
    }
}
postDataByLoop();

二、分批调用

假设有一个参数数组data = [1, 2, 3, 4, 5, 6, 7],每批3项,组织成一个请求发送,例如7项就发送3次,每次结束后再开始发送下一批:

相关文章

  • 循环拼接Promise链式调用

    一、连续调用 假设有一个参数数组data = [1, 2, 3, 4],每项都需要组织成一个请求发送,每项发送完之...

  • js promise图解

    链式调用 封闭promise

  • 嵌套的promise执行顺序

    外部promise有多个then链式调用,第一个then里面执行另一个promise,也带多个then链式调用,他...

  • Promise链式调用

    做了一个博客项目,有一个过程如下: 封装request函数(用axios发送请求),axios会返回一个promi...

  • Promise链式调用

    一、Promise对象 承诺一定会实现,更简单的处理异步请求。同时更加方便使用链式调用。缺点:Promise对象状...

  • Promise 链式调用

    Promise status状态,有三种状态pendding、resolved、rejected,状态由 pend...

  • ES6

    AJAX 异步网络请求 Promise 使用了Promise对象之后可以链式调用的方式组织代码 Promise.a...

  • 手写Promise

    1. 简易版Promise,只能调用一次then,不能链式调用:

  • Promise用法详解

    参考promise|深入理解 promise:promise的三种状态与链式调用 Promise对象只有三种状态 ...

  • async和await

    promise链 原来用promise的链式调用方式,then 中原本就返回了一个promise async 函数...

网友评论

      本文标题:循环拼接Promise链式调用

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