promise.all()实现

345 阅读1分钟

promise.all()

简单解释一下,接受的参数是一个数组类型的,当数组中每一个promise都成功的时候返回成功,也
就是说其中任意一个失败,返回的就是失败;

现在说一下如何实现:其实就是你要记录一下成功的promise的长度,只要返回成功的promise的长
度跟输入数组长度相等即为成功,反之失败,理解这点之后实现起来就比较简单了:

 **function all (promises) {
     const values = []
     return new Promise((resolve, reject) => {
         promises.forEach(promise => {
             promise.then(
                 value => {
                     values.push(value)
                     if (values.length === promises.length) {
                         resolve(value)
                     }
                 },
                 reaseon => {
                     reject(reason)
                 }
             )
         })
     })
 }**