typescript / intermediate
Snippet
Steuerung paralleler Asynchron-Batches mit Promise.allSettled
Das gleichzeitige Ausführen vieler asynchroner Aufrufe kann Systemressourcen überlasten. Die stufenweise Verarbeitung in Batches mit Promise.allSettled beschränkt die Gleichzeitigkeit und erfasst sowohl Erfolge als auch Fehler.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
async function processInBatches<T, R>(items: T[],batchSize: number,task: (item: T) => Promise<R>): Promise<PromiseSettledResult<R>[]> {const results: PromiseSettledResult<R>[] = [];for (let i = 0; i < items.length; i += batchSize) {const chunk = items.slice(i, i + batchSize);const chunkResults = await Promise.allSettled(chunk.map(task));results.push(...chunkResults);}return results;}
Erklärung
1
const chunk = items.slice(i, i + batchSize);
Teilt die ursprüngliche Datenmenge in ein kleineres Häppchen zur kontrollierten Ausführung auf.
2
const chunkResults = await Promise.allSettled(chunk.map(task));
Führt alle Promises des aktuellen Batches parallel aus und wartet auf deren Abschluss, ohne bei Einzelfehlern abzubrechen.