promise.all的用法讲解。

该文章已生成可运行项目,

promise.all()该方法用于将多个Promise实例,包装成一个新的Promise实例。

var p = Promise.all([p1,p2,p3]);

(1)只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给p的回调函数。
(2)只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。

请看下面示例:需要注意的是,promise.all()成功时,在then(result)中result是个数组

let p1 = new Promise((resolve, reject) => {
  resolve('成功了')
})

let p2 = new Promise((resolve, reject) => {
  resolve('success')
})

let p3 = Promise.reject('失败')

Promise.all([p1, p2]).then((result) => {
  console.log(result)               //['成功了', 'success']
}).catch((error) => {
  console.log(error)
})

Promise.all([p1,p3,p2]).then((result) => {
  console.log(result)
}).catch((error) => {
  console.log(error)      // 失败了,打出 '失败'
})

本文章已经生成可运行项目
JavaScript 中,`Promise.all` 和 `Promise.allSettled` 是处理多个 Promise 的常用方法,它们都可用于并发执行多个异步操作,但用法有所不同。 ### `Promise.all` 的用法 `Promise.all()` 方法接受一个包含多个 Promise 实例的可迭代对象(如数组),并返回一个新的 Promise 实例。这个新的 Promise 会在所有输入的 Promise 都成功解决时被解决,并且其结果是一个包含所有输入 Promise 结果的数组,顺序与输入的 Promise 顺序一致。若其中任何一个 Promise 被拒绝(rejected),则 `Promise.all` 返回的 Promise 会立即被拒绝,并携带第一个被拒绝的 Promise 的错误信息。 `Promise.all()` 更适合处理彼此相互依赖或者在其中任何一个失败时立即结束的情况。示例代码如下: ```javascript const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = Promise.resolve(3); Promise.all([promise1, promise2, promise3]) .then((results) => { console.log(results); // 输出: [1, 2, 3] }) .catch((error) => { console.error(error); }); const promise4 = Promise.resolve(4); const promise5 = Promise.reject(new Error('Something went wrong')); const promise6 = Promise.resolve(6); Promise.all([promise4, promise5, promise6]) .then((results) => { console.log(results); }) .catch((error) => { console.error(error); // 输出: Error: Something went wrong }); ``` ### `Promise.allSettled` 的用法 `Promise.allSettled()` 方法同样接受一个包含多个 Promise 实例的可迭代对象(如数组),并返回一个新的 Promise 实例。该 Promise 实例会在所有输入的 Promise 都确定其结果(无论是成功还是失败)时被解决。返回的结果是一个数组,数组中的每个元素是一个对象,描述了每个输入 Promise 的结果。对象包含两个属性:`status`(值为 `'fulfilled'` 或 `'rejected'`)和 `value`(如果 `status` 是 `'fulfilled'`)或 `reason`(如果 `status` 是 `'rejected'`)。 当有多个彼此不依赖的异步任务需要成功完成,或者总是想知道每个 Promise 的结果时,通常使用 `Promise.allSettled()`。示例代码如下: ```javascript const promise7 = Promise.resolve(7); const promise8 = Promise.reject(new Error('Another error')); const promise9 = Promise.resolve(9); Promise.allSettled([promise7, promise8, promise9]) .then((results) => { console.log(results); // 输出: // [ // { status: 'fulfilled', value: 7 }, // { status: 'rejected', reason: Error: Another error }, // { status: 'fulfilled', value: 9 } // ] }); ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值