文章目录
    
    
     这里有三个function a,b,c 三个方法的执行完成时间依次增加,即t(a)<t(b)<t(c)。
    
   
    
    
    一、Promise.all(iterable)
   
    
     当我们使用 let p_result = Promise.all([a,b,c]) ,等待所有方法执行完成后返回结果,即若a,b,c未执行完的情况下p_result 的PromiseStatus属性为“pending”,全部执行完后,所有结果中如果有一个为reject的则p_result 的结果为reject,否则为resolve
    
   
    
    
    MDN解释:
   
    
     Promise.all(iterable)
     
     这个方法返回一个新的promise对象,该promise对象在iterable参数对象里所有的promise对象都成功的时候才会触发成功,一旦有任何一个iterable里面的promise对象失败则立即触发该promise对象的失败。这个新的promise对象在触发成功状态以后,会把一个包含iterable里所有promise返回值的数组作为成功回调的返回值,顺序跟iterable的顺序保持一致;如果这个新的promise对象触发了失败状态,它会把iterable里第一个触发失败的promise对象的错误信息作为它的失败错误信息。Promise.all方法常被用于处理多个promise对象的状态集合。(可以参考jQuery.when方法—译者注)
     
    
   
    
    
    二、Promise.race(iterable)
   
    
     当我们使用 let p_result = Promise.all([a,b,c]) 执行结果以执行速度为最快的那个方法的结果(这里为a),即如果a的结果是reject则p_result的结果为reject,若a的结果为resolve则p_result的结果为resolve
    
   
    
    
    MDN解释:
   
    
     Promise.race(iterable)
     
     当iterable参数里的任意一个子promise被成功或失败后,父promise马上也会用子promise的成功返回值或失败详情作为参数调用父promise绑定的相应句柄,并返回该promise对象。
     
    
   
    
    
    三、Promise.any(iterable)
   
    
    
    MDN解释:
   
    
     接收一个Promise对象的集合,当其中的一个promise 成功,就返回那个成功的promise的值。
    
   
    
    
    四、 async await
   
    
     async wait使用就不介绍了,这里说下async wait+promise会使执行顺序按照数组中传递的顺序依次执行。all代码如下(示例):
    
   
async function getdate () {
    let pr1 = c();
    let pr2 = b();
    let pr3 = a();
    await Promise.all([pr1, pr2, pr3]);
}
   
    mdn链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise
   
  
 
