javascript / intermediate
Snippet
Benutzerdefinierte Async-Iteratoren für API-Paginierung
Async-Generatoren ermöglichen es Ihnen, benutzerdefinierte Iteratoren zu erstellen, die Werte asynchron produzieren. Die Verwendung von yield* mit einem Array innerhalb der Schleife ermöglicht das Abflachen der paginierten Ergebnisse und bietet eine nahtlose for-await-of-Schleife für den Datenkonsumenten.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
async function* fetchUserPages(baseUrl) {let page = 1;while (true) {const response = await fetch(`${baseUrl}?page=${page}`);const data = await response.json();if (data.users.length === 0) break;yield* data.users;page++;}}// Usage:for await (const user of fetchUserPages('https://api.example.com/v1')) {console.log(user.name);}
nodejs
Erklärung
1
async function* fetchUserPages(baseUrl)
Definiert eine asynchrone Generatorfunktion.
2
yield* data.users;
Delegiert die Iteration an jedes einzelne Element des abgerufenen Benutzer-Arrays.