📅  最后修改于: 2023-12-03 14:52:01.140000             🧑  作者: Mango
在 JavaScript 中,Promise.all
是一个非常有用的方法,它可以将多个 Promise 对象组合成一个单独的 Promise 对象,用于处理多个异步操作并等待它们全部完成。
Promise.all(iterable);
iterable
:包含多个 Promise 对象的可迭代对象,如数组或类数组对象。Promise.all
返回一个新的 Promise 对象。当传入的所有 Promise 对象全部成功解决时,返回的 Promise 对象才会被解决。返回的 Promise 对象解析的值是一个数组,该数组包含了传入 Promise 对象 resolve 的值,按照传入的顺序排列。
如果传入的任意一个 Promise 对象失败(即被拒绝),返回的 Promise 对象会立即被拒绝,并返回失败的 Promise 对象的结果。
const promise1 = Promise.resolve('Hello');
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 'World');
});
const promise3 = fetch('https://api.example.com/data');
Promise.all([promise1, promise2, promise3])
.then(([result1, result2, result3]) => {
console.log(result1); // Hello
console.log(result2); // World
console.log(result3); // Response object from the fetch request
})
.catch((error) => {
console.error(error);
});
在上面的示例中,我们使用了 Promise.resolve
创建一个已解决的 Promise 对象 promise1
,使用 Promise
构造函数创建一个延迟 2 秒的 Promise 对象 promise2
,以及使用 fetch
API 创建一个获取数据的 Promise 对象 promise3
。
通过 Promise.all
方法将这些 Promise 对象组合在一起,并使用 .then
处理成功解决时的结果,同时使用 .catch
处理任何一个 Promise 对象被拒绝的情况。
注意,在 .then
回调函数中,我们使用了 数组解构 来获取每个 Promise 对象解决的结果。
使用 Promise.all
方法可以很方便地处理多个异步操作,并等待它们全部完成。确保在使用 Promise.all
时考虑到所有 Promise 对象的解析顺序以及错误处理的逻辑,以充分利用这个强大的功能。
更多关于 Promise 的知识可以在 MDN Promise 文档中获取。