Skip to content

Commit 17d0c7a

Browse files
Update PromisePolyfill.js
1 parent 3b53a8b commit 17d0c7a

File tree

1 file changed

+49
-8
lines changed

1 file changed

+49
-8
lines changed

Interview Question/PromisePolyfill.js

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,58 @@ class MyPromise {
6666
this.finallyCb = cb;
6767
}
6868
}
69+
70+
static all(promises) {
71+
return new MyPromise((resolve, reject) => {
72+
if (!Array.isArray(promises)) {
73+
return new TypeError("Promises type should be array");
74+
}
75+
76+
let result = [];
77+
let completedResponse = 0;
78+
79+
if (promises.length === 0) {
80+
resolve(result);
81+
}
82+
83+
promises.forEach((promise, index) => {
84+
promise
85+
.then((res) => {
86+
result.push(res);
87+
completedResponse++;
88+
if (completedResponse === promises.length) {
89+
resolve(result);
90+
}
91+
})
92+
.catch((err) => {
93+
reject(err);
94+
});
95+
});
96+
});
97+
}
6998
}
7099

71100
const myPromise = new MyPromise((resolve, reject) => {
72-
setTimeout(() => reject("Hello, World!"), 1000);
101+
setTimeout(() => resolve("Hello, World!"), 1000);
73102
});
74103

75-
myPromise
76-
.then((data) => {
77-
console.log("On Then First : ", data);
78-
return "Hey";
104+
// myPromise
105+
// .then((data) => {
106+
// console.log("On Then First : ", data);
107+
// return "Hey";
108+
// })
109+
// // .then((secdata) => console.log("On Then Second : ",secdata))
110+
// .catch((data) => console.log("On Catch : ", data))
111+
// .finally(() => console.log("finally..."));
112+
113+
const promise1 = Promise.resolve(10);
114+
const promise2 = Promise.resolve(20);
115+
const promise3 = Promise.resolve(30);
116+
117+
MyPromise.all([myPromise, promise1, promise2, promise3])
118+
.then((results) => {
119+
console.log(results); // [10, 20, 30]
79120
})
80-
// .then((secdata) => console.log("On Then Second : ",secdata))
81-
.catch((data) => console.log("On Catch : ", data))
82-
.finally(() => console.log("finally..."));
121+
.catch((err) => {
122+
console.error(err);
123+
});

0 commit comments

Comments
 (0)