このページの以降のコードで使う共通コードです。
const timer = (time, type) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (type === 'resolve') {
resolve(`${time} 解決`);
}
if (type === 'reject') {
reject(`${time} 拒否`);
}
}, time);
});
};
「Promise.all」の解決の例です。
Promise.all([ 500, timer(600, 'resolve'), timer(700, 'resolve'), timer(800, 'resolve') ]) .then( val => console.log('○', val), val => console.log('×', val) );
○ [500, '600 解決', '700 解決', '800 解決']
「Promise.all」の拒否の例です。
Promise.all([ 500, timer(600, 'resolve'), timer(700, 'reject'), timer(800, 'reject') ]) .then( val => console.log('○', val), val => console.log('×', val) );
× 700 拒否
「Promise.allSettled」の例です。
Promise.allSettled([ 500, timer(600, 'resolve'), timer(700, 'reject'), timer(800, 'reject') ]) .then( val => console.log('○', val), val => console.log('×', val) );
○ [
{"status": "fulfilled", "value": 500},
{"status": "fulfilled", "value": "600 解決"},
{"status": "rejected", "reason": "700 拒否"},
{"status": "rejected", "reason": "800 拒否"}
]
「Promise.any」の解決の例です。最初に解決するのは、何も待たない「800」になります。
Promise.any([ timer(500, 'reject'), timer(600, 'resolve'), timer(700, 'resolve'), 800 ]) .then( val => console.log('○', val), val => console.log('×', val) );
○ 800
「Promise.any」の拒否の例です。全て拒否の場合です。
Promise.any([ timer(500, 'reject'), timer(600, 'reject'), timer(700, 'reject'), timer(800, 'reject') ]) .then( val => console.log('○', val), val => console.log('×', val) );
× AggregateError: All promises were rejected
「Promise.race」の解決の例です。
Promise.race([ timer(500, 'resolve'), timer(600, 'reject') ]) .then( val => console.log('○', val), val => console.log('×', val) );
○ 500 解決
「Promise.race」の拒否の例です。
Promise.race([ timer(600, 'resolve'), timer(500, 'reject') ]) .then( val => console.log('○', val), val => console.log('×', val) );
× 500 拒否