promise.all同时调用多个接口

使用 Promise.all() 并行处理多个 Promise。Promise.all() 接收一个实现了 Promise 接口的迭代器(通常是一个数组或者类数组对象),并返回一个新的 Promise,该 Promise 等待迭代器中的所有 Promise 都完成后才会被 resolved。在所有 Promise 都被 resolved 后,返回的Promise的 resolved value 会是一个数组,包含了传递给 Promise.all() 的每个 Promise 的 resolved value。如果其中任何一个 Promise 被 rejected, Promise.all() 返回的 Promise 将立即被 rejected 并返回rejected的 Promise 的原因。

以下是一个使用 Promise.all() 实现并行获取两个 API 数据的例子:

const promise1 = fetch('api1');
const promise2 = fetch('api2');

Promise.all([promise1, promise2])
  .then(([response1, response2]) => {
    // 处理 response1 和 response2
  })
  .catch((error) => {
    console.error(error);
  });

在上面的代码中,使用 fetch() 函数获取两个 API 的数据,将它们分别存储在 promise1 和 promise2 变量中,然后传递给 Promise.all(),在回调函数中可以访问每个 Promise 的响应对象。

insert(){
  let insertA = this.$http({
    method: "post",
    url: "asdfghjkl/insert",
    timeout: 0,
    data: this.rowDataA,
  });
  let insertB = this.$http({
    method: "post",
    url: "asdfghjkl/insert",
    timeout: 0,
    data: this.rowDataB,
  });
  Promise.all([insertA, insertB]).then((resList) => {
    for (let i = 0; i < resList.length; i++) {
      const res = resList[i];
      if (res.data.code === 200) {
        this.$message({
          message: "新增成功.",
          duration: 4000,
          showClose: true,
          type: "success",
        });
      } else {
        this.$message({
          message: res.data.msg,
          duration: 3000,
          showClose: true,
          type: "error",
        });
        return false;
      }
    }
  })
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
`Promise.all` 可以同时接受多个接口数据,它接受一个由多个 `Promise` 实例组成的数组作为参数,返回一个新的 `Promise` 实例,当数组中所有 `Promise` 实例都执行成功时,该实例才会执行成功。其语法如下: ```javascript Promise.all([promise1, promise2, promise3]) .then(([result1, result2, result3]) => { // 所有 Promise 都成功执行的回调函数 }) .catch(error => { // 任意一个 Promise 执行失败的回调函数 }); ``` 其中,`then` 回调函数的参数是一个数组,包含了每个 `Promise` 执行成功后的结果,数组中的顺序与传入 `Promise.all` 的数组顺序相同。如果其中任意一个 `Promise` 执行失败,则会跳过后续的 `Promise`,并执行 `catch` 回调函数。 举个例子,如果我们需要同时请求两个接口数据,并在两个接口数据都返回后对数据进行处理,可以这样实现: ```javascript const promise1 = fetch('/api/data1'); const promise2 = fetch('/api/data2'); Promise.all([promise1, promise2]) .then(([response1, response2]) => { return Promise.all([response1.json(), response2.json()]); }) .then(([data1, data2]) => { // 处理两个接口返回的数据 }) .catch(error => { // 处理异常情况 }); ``` 在上面的例子中,我们使用 `fetch` 函数请求了两个接口数据,并将返回的 `Promise` 实例放入一个数组中传给 `Promise.all`。在 `then` 回调函数中,我们将返回的 `Response` 对象转化为 JSON 数据,并将两个 `Promise` 实例放入一个新的数组中再次调用 `Promise.all`,以等待两个接口数据全部返回。最终我们可以在第二个 `then` 回调函数中使用返回的数据进行处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值