JavaScript

for~await~of 文

 編集:2022.08.23 by T.A.

非同期および同期の反復可能オブジェクトを使用して、反復処理を行うループを作成します。

たとえば、組込みの StringArray、配列風オブジェクト(例えば argumentsNodeList など)、TypedArrayMapSet、さらに、ユーザー定義の非同期/同期の反復可能オブジェクトを使用することができます。これはオブジェクトのそれぞれの識別可能なプロパティの値に対して、実行される文を表す独自の反復フックを呼び出します。await 演算子と同様に、この分は非同期関数の中でのみ使用されます。

for await (変数 of iterable) {  ステートメント }
変数 反復処理の各回において、異なるプロパティの値が割り当てられます。変数は const、let、var で宣言することができます。
iterable 反復処理が行われる反復可能なプロパティを持つオブジェクトです。

非同期反復可能プロトコルを明示的に実装しているオブジェクトを反復処理することができます。

//コンソールにて
const asyncIterable = {
  [Symbol.asyncIterator]() {
    return {
      i: 0,
      next() {
        if (this.i < 3) {
          return Promise.resolve({ value: this.i++, done: false });
        }

        return Promise.resolve({ done: true });
      }
    };
  }
};

(async function() {
   for await (let num of asyncIterable) {
     console.log(num);
   }
})();

// 0
// 1
// 2

テスト