Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

Symbol.asyncIterator

BaselineWidely available

Symbol.asyncIterator は静的データプロパティで、ウェルノウンシンボルであるSymbol.asyncIterator を表します。非同期反復可能プロトコルは、オブジェクトの非同期反復子を返すメソッドをこのシンボルで探します。オブジェクトが非同期反復可能であるためには、[Symbol.asyncIterator] キーを持つ必要があります。

試してみましょう

const delayedResponses = {  delays: [500, 1300, 3500],  wait(delay) {    return new Promise((resolve) => {      setTimeout(resolve, delay);    });  },  async *[Symbol.asyncIterator]() {    for (const delay of this.delays) {      await this.wait(delay);      yield `Delayed response for ${delay} milliseconds`;    }  },};(async () => {  for await (const response of delayedResponses) {    console.log(response);  }})();// Expected output: "Delayed response for 500 milliseconds"// Expected output: "Delayed response for 1300 milliseconds"// Expected output: "Delayed response for 3500 milliseconds"

ウェルノウンシンボルSymbol.asyncIterator です。

Symbol.asyncIterator のプロパティ属性
書込可能不可
列挙可能不可
設定可能不可

ユーザー定義の非同期反復可能項目

オブジェクトに[Symbol.asyncIterator]() プロパティを設定することで、独自の非同期イテレーターを定義することができます。

js
const myAsyncIterable = {  async *[Symbol.asyncIterator]() {    yield "hello";    yield "async";    yield "iteration!";  },};(async () => {  for await (const x of myAsyncIterable) {    console.log(x);  }})();// 期待される出力:// "hello"// "async"// "iteration!"

API を作成するとき、非同期反復可能項目はデータのストリームやリストのような、反復可能なものを表すために設計されたものであり、ほとんどの状況でコールバックやイベントを完全に置き換えるものではないことに注意してください。

組み込みの非同期反復可能オブジェクト

コア JavaScript 言語に非同期反復可能オブジェクトはありません。一部の Web API、例えばReadableStream は既定でSymbol.asyncIterator メソッドが設定されています。

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-symbol.asynciterator

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp