跳到主要内容

JavaScript中promise.all作用?

参考答案:

在JavaScript中,Promise.all() 是一个用于处理多个Promise对象的实用方法。这个方法接受一个Promise对象的数组作为参数,并返回一个新的Promise对象。这个新的Promise会在所有输入的Promise对象都成功解决(fulfilled)后解决,或者在任何一个Promise对象被拒绝(rejected)后立即拒绝。

这是Promise.all()的基本用法:

let promise1 = Promise.resolve(3);
let promise2 = 42;
let 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"]
});

在这个例子中,promise1promise2promise3都是Promise对象。Promise.all()方法会等待这三个Promise都解决(fulfilled)后,才会调用.then()方法。在.then()方法的回调函数中,我们可以获取到一个数组,这个数组包含了所有Promise的解决值,按照它们在数组中的顺序排列。

如果任何一个Promise被拒绝(rejected),Promise.all()会立即调用.catch()方法,并传入第一个被拒绝的Promise的错误对象。例如:

let promise1 = Promise.resolve(3);
let promise2 = new Promise((resolve, reject) => {
  reject('出错了!');
});
let promise3 = 42;

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
}).catch((error) => {
  console.log(error);
  // expected output: "出错了!"
});

在这个例子中,promise2被拒绝,所以Promise.all()立即调用.catch()方法,并传入promise2的错误对象。