typescript / intermediate
Snippet
Verarbeitung sequentieller Aufgaben mit asynchronen Iteratoren
Asynchrone Generatorfunktionen geben eine AsyncGenerator-Schnittstelle zurück, die Werte im Laufe der Zeit asynchron liefert und mit 'for await...of' verarbeitet wird.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
async function* fetchPages(urls: string[]): AsyncGenerator<string, void, unknown> {for (const url of urls) {await new Promise((resolve) => setTimeout(resolve, 50));yield `Content for ${url}`;}}async function processAllPages(urls: string[]) {for await (const pageContent of fetchPages(urls)) {console.log(pageContent);}}
Erklärung
1
async function* fetchPages(urls: string[]): AsyncGenerator<string, void, unknown> {
Deklariert einen asynchronen Generator, der Strings liefert und void zurückgibt.
2
yield `Content for ${url}`;
Gibt bei jedem Iterationsschritt einen in ein Promise eingehüllten Wert an den Konsumenten ab.
3
for await (const pageContent of fetchPages(urls)) {
Iteriert asynchron über Stream-Ergebnisse, sobald jedes Promise aufgelöst wird.