ES6-promise—等待多个异步函数全部完成

等待多个异步函数全部执行完成的函数创建不同于顺序执行。

  function fn1(){
    return new Promise(
      function(door,err){
        var demo="1号的接力棒";
        console.log(`1号拿着${demo}起跑。。。`);
        setTimeout(function(){
            console.log(`1号拿着${demo}到达终点`);
            console.log(`1号打开了门`);
            door(demo); 
        }, 3000);
      }
    )
  }

  function fn2(){
    return new Promise(
      function(door,err){
        var demo="2号的接力棒"
        console.log(`2号拿着${demo}起跑。。。`);
        setTimeout(() => {
            console.log(`2号拿着${demo}到达了终点`);
            console.log(`2号打开了门`);
            door(demo);
        }, 2000); 
      }
    )
  }

  function fn3(){
    return new Promise(
      function(door,err){
        var demo="3号的接力棒"
        console.log(`3号拿着${demo}起跑。。。`);
        setTimeout(() => {
            console.log(`3号拿着${demo}到达终点`);
          console.log(`3号打开了门`);
          door(demo);
        }, 5000);
      }
    )
  }

调用:

//调用: 
Promise.all([
    fn1(),
    fn2(),
    fn3()
  ]).then(arr=>{
    console.log("比赛结束");
    console.log(`全部到达终点`)
  });

这里的arr数组保存了promise.all中所有异步函数通过door()返回的执行结果。
注意: arr中返回值存储的顺序和异步函数执行完成的顺序无关。只和调用顺序有关。

你可能感兴趣的:(JavaScript)