es6 promise.all封裝以及promise.race封裝

function promiseAll(promises){
    return new Promise(function(resolve,reject){
        if(!Array.isArray(promises)){
            return reject(new TypeError("argument must be an array"))
        }
        var countNum=0;
        var promiseNum=promises.length;
        var resolvedvalue=new Array(promiseNum);
        for(let i=0;i<promiseNum;i++){
            Promise.resolve(promises[i]).then(function(value){
                countNum++;
                resolvedvalue[i]=value;
                if(countNum===promiseNum){
                    return resolve(resolvedvalue)
                }
            },function(reason){
                return reject(reason)}
            )
        
    }
})
}
let p1 = new Promise((resolve,reject)=>{
    resolve(1)
})
let p2 = new Promise((resolve,reject)=>{
    resolve(2)
})
let p3 = new Promise((resolve,reject)=>{
    resolve(3)
})

promiseAll([p1,p2,p3]).then(function(value){
    console.log(value)
})
promise.race
const _race = (p)=>{
	return new Promise((resolve, reject)=>{
		p.forEach((item)=>{
			Promise.resolve(item).then(resolve, reject)
		})
	})
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章