Promise.all()方法模块使用详解(图文1)
详细介绍 Promise.all()
的使用。
- 底层原理:
Promise.all()
是 JavaScript 中 Promise 对象的一个静态方法。- 它接受一个 Promise 对象的数组作为输入,当数组中所有 Promise 都 resolve 时,返回一个新的 Promise,该 Promise 的 resolve 值是一个包含所有 Promise resolve 值的数组。
- 如果数组中任何一个 Promise 被 reject,那么返回的 Promise 也会被 reject,并且 reject 值是第一个被 reject 的 Promise 的 reject 值。
- 使用步骤:
- 创建一个包含多个 Promise 的数组。
- 将这个数组作为参数传递给
Promise.all()
。 - 处理返回的 Promise,可以使用
.then()
和.catch()
方法。
- 示例:
// 创建三个 Promise const promise1 = new Promise((resolve, reject) => { setTimeout(() => { resolve('Promise 1 resolved'); }, 2000); }); const promise2 = new Promise((resolve, reject) => { setTimeout(() => { resolve('Promise 2 resolved'); }, 3000); }); const promise3 = new Promise((resolve, reject) => { setTimeout(() => { resolve('Promise 3 resolved'); }, 1000); }); // 将这三个 Promise 放入数组 const promises = [promise1, promise2, promise3]; // 使用 Promise.all() 执行这些 Promise Promise.all(promises) .then((results) => { console.log(results); // ['Promise 1 resolved', 'Promise 2 resolved', 'Promise 3 resolved'] }) .catch((error) => { console.error(error); });
- 流程解析:
- 首先我们创建了三个 Promise 对象,每个 Promise 在一定时间后 resolve 一个字符串。
- 我们将这三个 Promise 放入一个数组
promises
。 - 然后我们调用
Promise.all(promises)
。这会返回一个新的 Promise 对象。 - 如果数组中的所有 Promise 都成功 resolve,则新 Promise 的 resolve 值是一个包含所有 Promise resolve 值的数组。
- 如果数组中任何一个 Promise 被 reject,则新 Promise 会被 reject,并且 reject 值是第一个被 reject 的 Promise 的 reject 值。
- 我们使用
.then()
和.catch()
方法来处理新 Promise 的结果。
总之,Promise.all()
是一个非常有用的方法,可以帮助我们并行执行多个 Promise,并在所有 Promise 都成功 resolve 时获取到所有的结果。