【高级】实现 Promise.race/allSettled 方法的 polyfill
参考:风动之石的博客 - Promise.raceopen in new window
减分项:
- 把构造函数方法当作实例方法对待
- 未考虑到异步情况
加分项:
- 考虑到传入对象是非Promise,对每一项遍历增加Promise.resolve包裹
参考:风动之石的博客 - Promise.allSettledopen in new window
// Promise.allSetted 说明
输入:
[
promise1,
promise2,
...
promise10
]
每一个 promise 都确定状态,无论 resolved/rejected,返回一个结果的数组。
输出:
[
// promise1: resolved
{
status: 'fulfilled',
value,
},
// promise2: rejected
{
status: 'rejected',
reason,
},
...
]
注意:返回数组与输入数组要保持一致的顺序
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
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
【高级】实现 String.prototype.padStart 方法的 polyfill
参考:风动之石的博客 - String.prototype.padStartopen in new window