Symbol.asyncIterator

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

Die statische Dateneigenschaft Symbol.asyncIterator repräsentiert das wohlbekannte Symbol Symbol.asyncIterator. Das asynchrone Iterablen-Protokoll verwendet dieses Symbol für die Methode, die den asynchronen Iterator für ein Objekt zurückgibt. Damit ein Objekt asynchron iterierbar ist, muss es einen [Symbol.asyncIterator]-Schlüssel besitzen.

Probieren Sie es aus

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"

Wert

Das wohlbekannte Symbol Symbol.asyncIterator.

Eigenschaften von Symbol.asyncIterator
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beispiele

Benutzerdefinierte asynchrone Iterables

Sie können Ihr eigenes asynchrones Iterable definieren, indem Sie die Eigenschaft [Symbol.asyncIterator]() auf einem Objekt setzen.

js
const myAsyncIterable = {
  async *[Symbol.asyncIterator]() {
    yield "hello";
    yield "async";
    yield "iteration!";
  },
};

(async () => {
  for await (const x of myAsyncIterable) {
    console.log(x);
  }
})();
// Logs:
// "hello"
// "async"
// "iteration!"

Wenn Sie eine API erstellen, bedenken Sie, dass asynchrone Iterables dazu gedacht sind, etwas iterierbares zu repräsentieren – wie einen Datenstrom oder eine Liste –, und nicht in den meisten Situationen dazu dienen, Callbacks und Ereignisse vollständig zu ersetzen.

Eingebaute asynchrone Iterables

Es gibt kein Objekt in der Kernsprache JavaScript, das asynchron iterierbar ist. Einige Web-APIs, wie zum Beispiel ReadableStream, haben die Methode Symbol.asyncIterator standardmäßig gesetzt.

Spezifikationen

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

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
asyncIterator

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch