【高级】实现 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

【高级】实现 String.prototype.padStart 方法的 polyfill

参考:风动之石的博客 - String.prototype.padStartopen in new window