Promise.all()
是 JavaScript 中用于处理多个 Promise 对象的一个方法。这个方法接收一个 Promise 对象的数组作为参数,并返回一个新的 Promise 对象。这个新的 Promise 会在数组中所有的 Promise 对象都成功(resolve)时成功,并返回一个包含所有成功结果的数组;如果任何一个 Promise 对象失败(reject),这个新的 Promise 也会立即失败,并返回第一个失败的错误。
如果你向 Promise.all()
传递的数组中包含的不是 Promise 对象,而是其他类型的值(例如,数字、字符串、对象等),Promise.all()
仍然会返回一个 Promise 对象。但是,这些非 Promise 类型的值会被视为已经成功(即已 resolve)的 Promise 对象,并且它们的值会原封不动地出现在最终的成功结果数组中。
例如:
Promise.all([1, 'two', { three: 3 }, Promise.resolve(4)])
.then((values) => {
console.log(values); // 输出: [1, 'two', { three: 3 }, 4]
})
.catch((error) => {
console.error(error);
});
在这个例子中,Promise.all()
接收了一个包含数字、字符串、对象和已解决的 Promise 对象的数组。它返回一个新的 Promise 对象,这个 Promise 对象会立即成功,并返回一个包含所有原始值的数组。注意,非 Promise 类型的值(1、'two' 和 { three: 3 })在结果数组中保持不变。