Promise.race与Promise.all()()

A、Pomise.all使用

Promise.allプロミスプロミスは、新しいインスタンスにパッケージ化された複数のインスタンスであってもよいです。リジェクト成功は結果配列を返し、失敗が障害状態である第一の値が返されたとき一方、戻り値の成功と失敗は、異なっています。

聞かせてP1 = 新しい約束((解決、拒否)=> { 
  決意(' 成功了' 
})

させ、P2 = 新しい約束((解決、拒否)=> { 
  決意(' 成功' 
})

P3ましょう = Promseを。リジェクト(' 失败' 

Promise.all([P1、P2])。次に、((結果) => { 
  にconsole.log(結果)                // [ '成功了'、 '成功'] 
})。キャッチ((エラー)=> { 
  にconsole.log(エラー)
})

Promise.all([P1、P3、P2])。次に、((結果) => { 
  にconsole.log(結果)
})。キャッチ((エラー)=> { 
  にconsole.log(エラー)       // 失敗し、ショット'失敗' 
)}

例えば、複数の非同期処理を扱うときPromse.all非常に便利な、データのページには、2を待つ必要がある以上、AJAXのちょうどこの唯一のショーローディングアイコンの前に、通常の表示帰ってきました

= LET(時間)=>ウェイク{
   戻り 新しい新しい約束を((解決、拒否)=> { 
    たsetTimeout(() => { 
      解決({$ `時間 / 1000年第wake`後})
    }、時間)
  })
} 

P1 LET =覚醒(3000 
せP2 =覚醒(2000 

Promise.all([P1、P2])。次に、((結果) => { 
  にconsole.log(結果)        // [ 'ウェイクアップする3秒'、 '起床後2秒'] 
})。キャッチ((エラー)=> { 
  にconsole.log(エラー)
})
特別な注意が必要とされる、Promise.all内部得た配列成功した結果Promise.all配列データの配列順序は、受信し一貫している、すなわち、フロントP1結果、P2とP1の結果は後で取得よりも場合。これは、広大な利点をもたらします:フロントエンド開発プロセスの要求データに、時折出会いやシーンのための要求に応じてアクセスおよび使用データに複数の要求を送信、Promise.allを使用して間違いなく、この問題を解決することができます
 
二、Promise.race使用

名前が示すように、Promse.raceは結果が得られ、Promise.race([P1、P2、P3])、高速内部を言うことを意味し、レースの意味で、それは結果を返し、結果にかかわらず、それ自体の状態の成功または失敗の状態です。

聞かせてP1 = 新しい約束((解決、拒否)=> { 
  のsetTimeout(() => { 
    決意(' 成功' 
  }、1000年
})

P2ましょう = 新しい約束((解決、拒否)=> { 
  setTimeoutメソッド(( ) => { 
    (拒否' 失敗' 
  } 500 
})

Promise.race([P1、P2])。次に、((結果) => { 
  にconsole.log(結果)
})。キャッチ((エラー)=> { 
  にconsole.log(エラー)  // 開く「失敗」 
)}


リンクします。https://www.jianshu.com/p/7e60fc1be1b2

おすすめ

転載: www.cnblogs.com/aidixie/p/12511106.html