-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPromiseAll.js
More file actions
38 lines (35 loc) · 842 Bytes
/
PromiseAll.js
File metadata and controls
38 lines (35 loc) · 842 Bytes
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
35
36
37
38
const promises1 = [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)];
const promises2 = [
Promise.resolve(1),
Promise.reject("Error at 2"),
Promise.resolve(3),
];
function myPromiseAll(arr) {
let completed = 0;
let results = new Array(arr.length);
return new Promise((resolve, reject) => {
arr.forEach((promise, index) => {
Promise.resolve(promise)
.then((val) => {
results[index] = val;
completed = completed + 1;
if (completed === arr.length) {
resolve(results);
}
})
.catch((error) => {
reject(error);
});
});
});
}
myPromiseAll(promises1).then((val) => {
console.log(val);
});
myPromiseAll(promises2)
.then((val) => {
console.log(val);
})
.catch((error) => {
console.error(error);
});