こんにちは。
本日はPromise入門の続きです。
Promise.all
引数のPromiseが解決するまで、待機します。
const p1 = Promise.resolve('p1'); const p2 = Promise.resolve('p2'); const p3 = new Promise((resolve, reject) => { setTimeout(resolve, 3000, 'p3'); }); Promise.all([p1,p2,p3]).then((value) => { console.log(value); });
結果は以下です。
[ 'p1', 'p2', 'p3' ]
Promise.allSettled
与えられたPromiseのすべての結果を返します。
const p1 = Promise.resolve('p1'); const p2 = Promise.reject('p2'); const p3 = Promise.resolve('p3'); const promises = [p1, p2, p3]; Promise.allSettled(promises) .then((result) => { result.forEach((result) => { console.log(result.status); }); });
結果は以下です。
fulfilled rejected fulfilled
Promise.race
与えられたPromiseが1つでも成功もしくは失敗したら
即座にPromiseを返します。
const p1 = new Promise((resolve, reject) => { setTimeout(resolve, 1000, 'p1'); }); const p2 = new Promise((resolve, reject) => { setTimeout(resolve, 2000, 'p2'); }); Promise.race([p1, p2]).then(value => { console.log(value); });
結果は以下です。
p1
もう一つ例を。
const p3 = new Promise((resolve, reject) => { setTimeout(reject, 1000, 'p3'); }); const p4 = new Promise((resolve, reject) => { setTimeout(resolve, 2000, 'p4'); }); Promise.race([p3, p4]) .then(value => { console.log(value); }) .catch(value => { console.log(`reject:${value}`); });
結果は以下です。
reject:p3
以上です。