一,前言
上一篇,主要实现了 Promise 两个实例 API(原型方法):Promise.prototype.catch 和 Promise.prototype.finally,主要涉及以下几个点:
Promise.prototype.catch功能测试、原理分析、源码实现;Promise.prototype.finally功能测试、原理分析、源码实现;
本篇,继续实现 Promise 的核心静态 API(类方法):Promise.all;
备注:Promise.all 是 Promise 中最复杂的方法;也是日常开发中的高频 API 和 面试考察点;
二,Promise.all 简介
1,API 介绍

Promise.all功能:
- 批量执行 Promise,返回一个 promise 实例;
- 全部成功才算成功,返回全部执行结果;
- 有一个失败就算失败,返回第一个失败结果;
2,原生 Promise.all 功能测试
- 成功示例:
Promise.all([new Promise((resolve, reject) => {
setTimeout(() => {
resolve(200)
}, 1000);
}), 1]).then(data => {
console.log("then", data)
}).catch(err => {
console.log('catch', err)
})
// 执行结果:then [ 200, 1 ]
备注:
- 数字 1 不是 promise,直接被放入结果数组中;
- 执行结果在结果数组中的顺序与执行顺序一致;
- 失败示例:
Promise.all([new Promise((resolve, reject) => {
setTimeout(() => {
// 1 秒后成功
resolve(200)
}, 1000)

本文深入探讨Promise.all()的工作原理及其实现细节,包括功能测试、源码解析及应用场景等。
最低0.47元/天 解锁文章
1103

被折叠的 条评论
为什么被折叠?



