Promise.all() 多个接口并行调用

Promise.all() 多个接口并行调用

有些场景我们需要同时调用多个接口的数据,对数据进行处理并渲染到页面上,这个时候需要保证多个接口能够一起并行调用,而 Promise.all() 方法则满足了这个需求。

Promise.all() 介绍

关于 Promise.all() 方法的介绍直接看 MDN 官网

Promise.all() 方法接收一个 promise 的 iterable 类型(注:Array,Map,Set 都属于 ES6 的 iterable 类型)的输入,并且只返回一个Promise实例, 那个输入的所有 promise 的 resolve 回调的结果是一个数组。这个Promise的 resolve 回调执行是在所有输入的 promise 的 resolve 回调都结束,或者输入的 iterable 里没有 promise 了的时候。它的 reject 回调执行是,只要任何一个输入的 promise 的 reject 回调执行或者输入不合法的 promise 就会立即抛出错误,并且 reject 的是第一个抛出的错误信息。

下面是简单的 demo:

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});
// expected output: Array [3, 42, "foo"]

语法

Promise.all(iterable);

iterable 代表一个可迭代对象,如 ArrayString

想了解更多的用法请查看 MDN

posted @ 2022-06-06 17:50  MyDistance  阅读(1595)  评论(0编辑  收藏  举报