实现promise.all-小红书面试
题目
写一个promise.all方法的实现,可以使用原生的promise,不用实现promise。
解答
给一个最简单的实现,可能有很多漏考虑的情况,仅供参考:
Promise.prototype.allTest = function(promiseArr){
const resAll = []; // 通过的promise
const rejAll = []; // 失败的promise
const endFlag = false; // 结束标识符
return new Promise((resolve, reject) => {
promiseArr.forEach( pItem => {
pItem().then(res => {
if(endFlag) return;
res.push(res);
if(res.length === promiseArr.length){
resolve(res);
}
}, rej => {
rejAll.push(rej);
endFlag = true;
reject(rejAll);
})
});
})
}
你有好的实现方法,欢迎贴到评论区!