KJR020's Blog

PromiseAll

Promise.allについて調べたときのメモ

経緯

なぜか忘れたけど、Promise.allについて調べていた。 記事にまとめておく。

概要

Promise.all()は、JavaScriptの組み込みの静的メソッドである。 iterableなPromiseを入力として受取る。 それらのPromiseが全てresolveされた際に、新しいPromiseを返す。

使い方

mdnのデモを引用すると、以下のような構文となる。

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise([promise1, promise2, promise3]).then((values) => 
  console.log(values)
);
// Expected output: Array [3, 42, "foo"]

パラメーター

  • iterable : Promiseの配列など、iterableなオブジェクト。

戻り値

  • Promise : 全てのPromiseがresolveされた際に、resolveされるPromise。
    • 空のiterableを渡した場合 -> 即座にresolveされるPromiseを返す。
    • 全てのPromiseがresolveされた場合 -> resolveされた値を持つPromiseを返す。
      このとき、返されるPromiseのresolveされた順番によらず、引数のPromiseの順番になる。
    • 一つでもrejectされた場合は、即座にrejectされる。
      このとき、rejectされた理由は、最初にrejectされたPromiseの理由となる。

参考

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.all

Esc
キーワードを入力して検索