ES 6 promise—複数の非同期関数が全て完了するのを待つ

10382 ワード

複数の非同期関数のすべての実行が完了するまで待つ関数の作成は、順番とは異なります.
  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における戻り値の格納順序は、非同期関数の実行が完了した順序とは無関係である.呼び出し順序だけが関係します.