input
一个数组,数据中的每个元素是一个返回Promise对象的函数
output
Promise<boolean>: 如果所有promise对象都进入了Resolved(Fullfilled)状态,返回true,否则返回false
实现
function MyPromiseAll(asyncFunctions){
const n = asyncFunctions.length;
if (n <= 0) return Promise.resolve(true);
let counter = 0;
return new Promise((resolve) => {
asyncFunctions.forEach(fn => {
fn()
.then(() => {
counter++;
if (counter === n) resolve(true);
})
.catch(() => {
resolve(false);
})
})
})
}