typescript / intermediate
Snippet
Verarbeiten paginierter Datenströme mit Async-Generatoren
Async-Generatoren kombinieren asynchronen Kontrollfluss mit Generatoren unter Verwendung der Syntaxe async function*, wodurch Promises sequenziell bereitgestellt werden, um datenstromartige Daten effizient zu verarbeiten.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
async function* fetchPaginatedRecords(limit: number): AsyncGenerator<number[], void, unknown> {let page = 1;while (page <= 3) {const records = Array.from({ length: limit }, (_, i) => (page - 1) * limit + i + 1);yield records;page++;}}(async () => {for await (const batch of fetchPaginatedRecords(2)) {console.log('Batch:', batch);}})();
Erklärung
1
async function* fetchPaginatedRecords(limit: number): AsyncGenerator<number[], void, unknown> {
Deklariert einen Async-Generator, der einen AsyncGenerator-Typ zurückgibt, der Number-Arrays erzeugt.
2
yield records;
Übergibt den aktuellen Batch von Datensätzen asynchron an die Konsumentenschleife.
3
for await (const batch of fetchPaginatedRecords(2)) {
Verwendet die for await...of-Schleife, um die Ausführung zu pausieren, bis jeder zurückgegebene Batch aufgelöst ist.