讲讲用到的promise.all

本文介绍了JavaScript中的Promise.all方法,阐述了其并发执行原理,状态汇集规则,以及如何处理错误。还提供了手写的Promise.all实现示例。
摘要由CSDN通过智能技术生成

Promise.all 是 JavaScript 中 Promise API 的一个方法,它用于同时处理多个 Promise 对象。Promise.all 接受一个 iterable(如数组)作为输入,其中每个成员都是一个 Promise。其基本原理是:

  1. 并发执行:Promise.all 会并发地执行所有的 Promise,即不是按顺序一个接一个执行,而是同时开始执行。

  2. 状态汇集:Promise.all 会创建一个新的 Promise,这个新的 Promise 的状态取决于传入的所有 Promise。

    • 如果所有输入的 Promise 都成功解决(resolve),Promise.all 返回的 Promise 也会解决,并且其解决值是一个数组,包含所有输入 Promise 的解决值,按照输入数组的顺序排列。
    • 如果有任何输入的 Promise 被拒绝(reject),Promise.all 直接返回一个被拒绝的 Promise,并且其拒绝原因通常是第一个被拒绝的 Promise 的拒绝原因。这意味着,一旦有任何 Promise 被拒绝,Promise.all 就不会等待其他 Promise 完成它们的操作。
  3. 错误处理:由于 Promise.all 一旦遇到拒绝就会立即拒绝,所以它通常需要配合 .catch 方法来处理错误,或者可以在每个 Promise 中分别处理错误。
     

手写一个Promise.all的实现:

Promise.all = function(promiseArr) {
    let index = 0,result = [];
    return new Promise((resolve,reject) => {
        promiseArr.forEach((p,i) => {
            Promise.resolve(p).then(val => {
                index++;
                result[i] = val;
            if (index === promiseArr.length) {
                    resolve(result)               } 
                        },
                    err => {
                    reject(err)}   
            })
        })
    })
}

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值