Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b554bfb

Browse files
committed
feat: add promise race
1 parent 92df6f4 commit b554bfb

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

‎js/promise.js‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22
* @Author: Chacha
33
* @Date: 2022年04月19日 22:33:05
44
* @Last Modified by: Chacha
5-
* @Last Modified time: 2022-04-20 23:28:20
5+
* @Last Modified time: 2022-04-21 11:49:24
66
*/
77

88
/**
99
* Promise 练习
1010
*
1111
*/
12-
12+
// Promise.all() 方法接收一个 promise 的 iterable 类型(注:Array,Map,Set都属于ES6的iterable类型)的输入,
13+
// 并且只返回一个 Promise 实例, 那个输入的所有 promise 的 resolve 回调的结果是一个数组。
1314
Promise.myAll = (promises) => {
1415
return new Promise((resolve, reject) => {
1516
if (!Array.isArray(promises)) {
@@ -35,6 +36,8 @@ Promise.myAll = (promises) => {
3536
});
3637
};
3738

39+
// 该Promise.allSettled()方法返回一个在所有给定的 promise 都已经 fulfilled 或 rejected 后的 promise,
40+
// 并带有一个对象数组,每个对象表示对应的 promise 结果。
3841
Promise.myAllSettled = (promises) => {
3942
return new Promise((resolve, reject) => {
4043
if (!Array.isArray(promises)) {
@@ -86,6 +89,15 @@ Promise.myAllSettled = (promises) => {
8689
});
8790
};
8891

92+
// Promise.race(iterable) 方法返回一个 promise,一旦迭代器中的某个promise解决或拒绝,返回的 promise 就会解决或拒绝。
93+
Promise.myRace = (promises) => {
94+
return new Promise((resolve, reject) => {
95+
promises.forEach((p) => {
96+
Promise.resolve(p).then(resolve).catch(reject);
97+
});
98+
});
99+
};
100+
89101
let p1 = Promise.resolve(1);
90102
let p2 = 2;
91103
let p3 = new Promise((resolve) => {
@@ -102,3 +114,5 @@ Promise.myAll([p1, p2, p3])
102114
});
103115

104116
Promise.myAllSettled([p1, p2, p4]).then(console.log);
117+
118+
Promise.myRace([p1, p2, p3]).then(console.log);

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /