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"]
});
在这个例子中,promise1
、promise2
和promise3
都是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
的错误对象。