左小白的技术日常
Github

Promise.all、race 实现,函数作为参数时的简写

这篇文章发布于 2020/12/15,归类于
标签:
Promise.all实现Promise.race实现函数参数简写

一般函数当参数时,有一种情况可以直接简写,例子如下

func(data => {
  console.log(data)
})

可以简写为

func(console.log)

下面来看看在 Promise.all 和 Promise.race 实现中的应用

class MyPromise {
  static all(array) {
    return new MyPromise((resolve, reject) => {
      let successCount = 0
      let resultArr = []
      for (let i = 0; i < array.length; i++) {
        let promise = MyPromise.resolve(array[i])
        promise._then((data) => {
          successCount++
          resultArr.push(data)
          successCount === array.length && resolve(resultArr)
        }, (err) => {
          reject(err)
        })
        // 函数参数 (err) => { reject(err) } 等价于 reject
      }
    })
  }

  static race(array) {
    return new MyPromise((resolve, reject) => {
      for (let i = 0; i < array.length; i++) {
        let promise = MyPromise.resolve(array[i])
        promise._then(resolve, reject)
        // 函数参数 (err) => { reject(err) } 等价于 reject
      }
    })
  }
}