Promise:
【第二弾 Promiseとは】
・「Promise.all」で複数のPromiseを「並行処理」する方法こともできます。
非同期処理を配列に複数格納して、配列内のすべての非同期処理が完了したら.thenを実行するということができる。
Promise.all([
非同期処理1(resolve('非同期処理1終了')),
非同期処理2(resolve('非同期処理2終了')),
非同期処理3(resolve('非同期処理3終了'))
]).then(function(data) {
console.log(data);
console.log('すべての処理が終了しました!');
})
["非同期処理1終了 ", "非同期処理2終了", "非同期処理3終了"]
すべての処理が終了しました!
・エラー並行処理中にエラーが発生した場合
Promise.all([
非同期処理1(resolve('非同期処理1終了')),
非同期処理2(reject('error')),
非同期処理3(resolve('非同期処理3終了'))
]).then(function(data) {
console.log(data);
console.log('すべての処理が終了しました!');
})
rejectでerrorとなっているので.thenのメソッドは実行されません。注意が必要です。
・Promise.race()は複数のPromiseを「並行処理」するが、並行処理のなかで「resolve」または「reject」が呼び出されたら「.then」の処理が実行されます。
Promise.race([
非同期処理1(resolve('非同期処理1終了')),
非同期処理2(reject('error')),
非同期処理3(resolve('非同期処理3終了'))
]).then(function(data) {
console.log(data);
console.log('すべての処理が終了しました!');
})
["非同期処理1終了 ", "error", "非同期処理3終了"]
すべての処理が終了しました!
このような違いがあるので注意です。