Promise.all()
是 JavaScript 中的一个方法,用于处理多个 Promise 对象。它接收一个 Promise 对象的数组作为参数,并返回一个新的 Promise 对象。当数组中的所有 Promise 对象都成功解析(fulfilled)时,返回的 Promise 对象才会解析,并且其结果是一个包含所有 Promise 结果的数组。如果任何一个 Promise 失败(rejected),则返回的 Promise 对象也会立即失败,并且其结果是第一个失败的 Promise 的错误信息。
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); // [3, 42, "foo"]
});
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
const promises = {
a: promise1,
b: promise2,
c: promise3
};
Promise.all(Object.values(promises)).then(values => {
console.log(values); // [3, 42, "foo"]
});
Promise.all()
等待对象属性的返回当使用 Promise.all()
处理对象属性时,可能会遇到以下问题:
Promise.all()
会将其视为已解析的 Promise。确保对象的所有属性值都是 Promise 对象,并且在调用 Promise.all()
之前进行检查。
const promises = {
a: Promise.resolve(3),
b: Promise.resolve(42),
c: new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
})
};
Promise.all(Object.values(promises)).then(values => {
console.log(values); // [3, 42, "foo"]
}).catch(error => {
console.error('Error:', error);
});
Promise.all()
是一个强大的工具,用于处理多个异步操作。通过确保所有属性值都是 Promise 对象,并在调用 Promise.all()
之前进行检查,可以避免常见的问题。
领取专属 10元无门槛券
手把手带您无忧上云