JS の Promise.all() と Promise.allSettled() の違いは何ですか? 質問する

JS の Promise.all() と Promise.allSettled() の違いは何ですか? 質問する

私は読んでいた翻訳のマニュアル約束そして、私には似ているように思える次の 2 つの方法を見つけました。

どちらも反復可能満たされた s を含む配列を返しますPromise

それで、それらの違いは何でしょうか?

ベストアンサー1

Promise.allすぐに拒否します1つ配列内の Promise は拒否されます。

Promise.allSettled決して拒否されない - 一度解決する全て配列内の Promise は拒否または解決されています。

それらの解決値も異なります。 は、Promise.allPromise が解決する各値の配列に解決されます。たとえば、[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);

おすすめ記事