一、手动实现一个 Promise.all() 方法
function myPromiseAll(promiseArr) {
let resultArr = [];
return new Promise((resolve) => {
if (promiseArr.length === 0) {
resolve(promiseArr);
}
let count = 0;
for (let i = 0; i < promiseArr.length; i += 1) {
Promise.resolve(promiseArr[i]).then(value => {
resultArr[i] = value;
if (++count === promiseArr.length) {
resolve(resultArr);
}
}).catch((err) => console.log("promiseAll 出错啦", err));
}
})
}
// 调⽤参考
const promise1 = new Promise(resolve => resolve(1));
const promise2 = new Promise(resolve => resolve(2));
const promise3 = new Promise(resolve => resolve(3));
const promiseAll = myPromiseAll([promise1, promise2, promise3]);
promiseAll.then(function (res) {
console.log(res); // 输出:[1,2,3]
});
Tips:【小程序云开发】中高级前端面试题库(源码:小程序中联系我哟)。
---------- 创作不易,感谢大家,请多多支持!