Promise.myAll = (promise) => {
return new Promise((rs, rj) => {
// 计数器
let count = 0;
// 存放结果
let result = [];
const len = promises.length;
if (len === 0) {
return rs([]);
}
promises.forEach((p, i) => {
Promise.resolve(p)
.then((res) => {
count += 1;
// 收集每个promise的返回值
result[i] = res;
// 当所有的Promise 都成功了 ,那么将返回的Promise结果设置为result
if (count === len) {
rs(result);
}
})
.catch(rj);
});
});
};
const p1 = Promise.resolve(1);
const p2 = new Promise((resolve) => {
setTimeout(() => resolve(2), 1000);
});
const p3 = new Promise((resolve) => {
setTimeout(() => resolve(3), 3000);
});
// const p4 = Promise.reject("err4");
// const p5 = Promise.reject("err5");
const p11 = Promise.myAll([p1, p2, p3])
.then(() => {
console.log("aaaaa");
})
.catch(() => {
console.log("bbb");
});