Promise.All

Promise.allpromise

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.waitallbash

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)
    })
複製代碼
相關文章
相關標籤/搜索