手写实现Promise.all

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const PromiseAll = (array)=>{
let tempValue = [];
let i = 0;

return new Promise((resolve,reject)=>{
const next = () => {
array[i].then((res)=>{
i++;
tempValue.push(res)

return i === array.length ? resolve(tempValue):next()
}).catch((res)=>{
reject(`reject ${res}`)
})
}
next();
})
}

let p1 = Promise.resolve(1);
let p2 = Promise.resolve(2);
let p3 = Promise.resolve(3);

PromiseAll([p1,p2,p3]).then(res=>{
console.log(res) // [1,2,3]
})

let p4 = Promise.resolve(2);
let p5 = Promise.resolve(2);
let p6 = Promise.reject(1);

PromiseAll([p4,p5,p6]).then(res=>{
console.log(res) // reject 1
})
PenZ wechat
交个朋友吧
点滴分享,您的支持将极大的鼓励我!