私は読んでいた翻訳のマニュアル約束そして、私には似ているように思える次の 2 つの方法を見つけました。
どちらも反復可能満たされた s を含む配列を返しますPromise
。
それで、それらの違いは何でしょうか?
ベストアンサー1
Promise.all
すぐに拒否します1つ配列内の Promise は拒否されます。
Promise.allSettled
決して拒否されない - 一度解決する全て配列内の Promise は拒否または解決されています。
それらの解決値も異なります。 は、Promise.all
Promise が解決する各値の配列に解決されます。たとえば、[Promise.resolve(1), Promise.resolve(2)]
は になります[1, 2]
。はPromise.allSettled
、代わりに を返します[{ status : 'fulfilled', value: 1 }, { status : 'fulfilled', value: 2 }]
。
Promise.all([Promise.resolve(1), Promise.resolve(2)])
.then(console.log);
Promise.allSettled([Promise.resolve(1), Promise.resolve(2)])
.then(console.log);
いずれかの Promise が拒否された場合、 はPromise.all
拒否の値で拒否されますが、配列内のその場所にあるPromise.allSettled
のオブジェクトで解決されます。{ status: 'rejected', reason: <error> }
Promise.all([Promise.reject(1), Promise.resolve(2)])
.catch((err) => {
console.log('err', err);
});
Promise.allSettled([Promise.reject(1), Promise.resolve(2)])
.then(console.log);