Promise.All

Promise.all

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

Promise.waitall

function promiseWaitAll(promises) {
    return new Promise(function(resolve, reject) {
      if (!Array.isArray(promises)) {
        return reject(new TypeError('arguments must be an array'));
      }
      var resolvedCounter = 0;
      var promiseNum = promises.length;
      var resolvedValues = new Array(promiseNum);
      for (var i = 0; i < promiseNum; i++) {
        (async function(i) {
          await promises[i].then(function(value) {
            resolvedCounter++
            resolvedValues[i] = value
            if (resolvedCounter == promiseNum) {
              return resolve(resolvedValues)
            }
          }, function(reason) {
            return reject(reason)
          })
        })(i)
      }
    })
  }
  const promiseA = new Promise(function(resolve, reject) {
    setTimeout(function(){reject("bbb")},5000)
  })
  const promiseB = Promise.resolve(false)
  const promiseC = Promise.resolve("aaa")
  promiseWaitAll([promiseA,promiseB,promiseC]).then(
    (a,b)=>{console.log(a,b)
    }).catch(
    (a,b)=>{console.log(a,b)
    })
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值