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 Iterationsprotokoll verwendet dieses Symbol, um die Methode abzurufen, die den asynchronen Iterator für ein Objekt zurückgibt. Damit ein Objekt asynchron iterierbar ist, muss es einen Schlüssel [Symbol.asyncIterator]
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 | |
---|---|
Schreibbar | nein |
Aufzählbar | nein |
Konfigurierbar | nein |
Beispiele
Benutzerdefinierte asynchrone Iterables
Sie können Ihr eigenes asynchrones Iterable definieren, indem Sie die Eigenschaft [Symbol.asyncIterator]()
auf einem Objekt festlegen.
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!"
Beim Erstellen einer API denken Sie daran, dass asynchrone Iterables dazu gedacht sind, etwas iterierbares darzustellen — wie einen Datenstrom oder eine Liste — und nicht dazu, in den meisten Situationen Callbacks und Ereignisse vollständig zu ersetzen.
Eingebaute asynchrone Iterables
Es gibt kein Objekt in der Kern-JavaScript-Sprache, das asynchron iterierbar ist. Einige Web-APIs, wie zum Beispiel ReadableStream
, haben die Symbol.asyncIterator
-Methode standardmäßig gesetzt.
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-symbol.asynciterator |