Baseline Widely available
Die Symbol.asyncIterator
statische Dateneigenschaft repräsentiert das wohlbekannte Symbol Symbol.asyncIterator
. Das Async-Iterable-Protokoll sucht dieses Symbol für die Methode, die den asynchronen Iterator für ein Objekt zurückgibt. Damit ein Objekt asynchron iterable ist, muss es einen [Symbol.asyncIterator]
Schlüssel haben.
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
.
Sie können Ihr eigenes asynchrones Iterable definieren, indem Sie die Eigenschaft [Symbol.asyncIterator]()
auf einem Objekt setzen.
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 sollten Sie daran denken, dass asynchrone Iterables dazu gedacht sind, etwas Iterierbares zu repräsentieren â wie einen Datenstrom oder eine Liste â und nicht dazu, Callbacks und Ereignisse in den meisten Situationen vollständig zu ersetzen.
Eingebaute asynchrone IterablesEs gibt kein Objekt in der Kern-JavaScript-Sprache, das asynchron iterable ist. Einige Web-APIs, wie zum Beispiel ReadableStream
, haben die Symbol.asyncIterator
-Methode standardmäÃig gesetzt.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4