(前端手撕)5. 手写promise.all与race

手写promise.all与race

1. 手写promise.all

 function promiseAll (promises) {
            return new Promise(function(resolve,reject){
                if(!Array.isArray(promises)){
                    return reject(new TypeError('argunments must be Array'))
                }
                var resolvedCount = 0;
                var promiseNum = promises.length;
                var resolvedValues = new Array(promiseNum);
                for(let i = 0;i<promiseNum;i++){
                    Promise.resolve(promise[i]).then(function(value){
                        resolvedCount++;
                        resolvedValues[i] = value;
                        if(promiseNum == resolvedCount){
                            return resolve(resolvedValues)
                        }
                    },function(reason){
                        return reject(reason)
                    })
                }

            })
        }

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

2. 手写promise.race

 function promiseRace(promises) {
            if (!Array.isArray(promises)) {
                throw new Error("promises must be an array")
            }
            return new Promise(function (resolve, reject) {
                promises.forEach(p =>
                    Promise.resolve(p).then(data => {
                        resolve(data)
                    }, err => {
                        reject(err)
                    })
                )
            })
        }
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务