typescript / intermediate
Snippet
Datenstreaming in Stapeln mit Asynchronen Generatoren und Iteratoren
Asynchroner Generatorfunktionen kombinieren das Schlüsselwort yield mit asynchronen Operationen. Die Rückgabe einer AsyncGenerator-Schnittstelle ermöglicht es Konsumenten, paginierte Daten nacheinander Element für Element mittels 'for await...of'-Schleifen zu verarbeiten, ohne alle Datensätze auf einmal in den Speicher zu laden.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
interface DataPage<T> {items: T[];nextCursor?: string;}async function* fetchPagedData<T>(fetcher: (cursor?: string) => Promise<DataPage<T>>): AsyncGenerator<T, void, unknown> {let cursor: string | undefined = undefined;do {const page: DataPage<T> = await fetcher(cursor);for (const item of page.items) {yield item;}cursor = page.nextCursor;} while (cursor !== undefined);}
Erklärung
1
async function* fetchPagedData<T>(
Deklariert eine asynchrone Generatorfunktion, die Werte des generischen Typs T zurückgibt.
2
yield item;
Gibt einzelne Elemente nacheinander an den Aufrufer des asynchronen Iterators ab.
3
} while (cursor !== undefined);
Setzt das Abrufen nachfolgender Seiten fort, solange ein gültiger Cursor im Datensatz der vorherigen Seite enthalten ist.