Promise.all()代码实现

function myPromiseAll(promises) {
        return new Promise((resolve, reject) => {
            const results = new Array(promises.length);
            let count = 0;

            promises.forEach((promise, index) => {
                promise.then(result => {
                    results[index] = result;
                    count++;

                    if (count === promises.length) {
                        resolve(results);
                    }
                }).catch(error => {
                    reject(error);
                });
            });
        });
    }

在上述代码中,我们定义了一个 myPromiseAll 函数,它接受一个 Promise 对象数组作为参数,并返回一个新的 Promise 对象。在该函数内部,我们定义了一个 results 数组来保存所有 Promise 对象的结果,定义了一个 count 变量来记录已完成的 Promise 对象个数。

然后,我们通过 forEach 方法遍历所有的 Promise 对象,并为每个 Promise 对象绑定成功回调和失败回调。当一个 Promise 对象成功时,将其成功结果放入 results 数组中,并增加 count 变量的值。当 count 的值等于 Promise 对象数组的长度时,说明所有的 Promise 对象都已完成,此时将 results 数组作为新的 Promise 对象的成功结果,调用 resolve 方法并传入该数组。当一个 Promise 对象失败时,直接调用 reject 方法并传入该 Promise 对象的失败原因。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值