typescript / expert
Snippet
Abbrechbare Asynchrone Generator-Warteschlange mit AbortSignal-Steuerung
Asynchrone Generatoren bieten in Kombination mit AbortSignal eine explizite Flusssteuerung und frühzeitige Abbruchmöglichkeiten für asynchrone Streams. Durch die Überprüfung von signal.aborted vor der Ausgabe jedes Elements kann der Ressourcenverbrauch sofort unterbrochen werden, wenn nachgelagerte Konsumenten einen Abbruch signalisieren.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
async function* streamWithAbort<T>(source: AsyncIterable<T>,signal: AbortSignal): AsyncGenerator<T, void, unknown> {for await (const item of source) {if (signal.aborted) {throw new DOMException("Stream processing aborted by caller", "AbortError");}yield item;}}
Erklärung
1
async function* streamWithAbort<T>(
Deklariert eine generische asynchrone Generator-Funktion, die Werte vom Typ T erzeugt.
2
source: AsyncIterable<T>,
Akzeptiert einen eingehenden asynchronen iterierbaren Datenstrom.
3
signal: AbortSignal
Empfängt ein natives AbortSignal-Objekt zur Abbruchüberwachung.
4
): AsyncGenerator<T, void, unknown> {
Definiert Rückgabetyp-Signaturen für erzeugte Werte, den Endwert und nachfolgende Argumente.
5
for await (const item of source) {
Iteriert asynchron über jedes Element im eingehenden Datenstrom.
6
if (signal.aborted) {
Prüft vor der Verarbeitung, ob das Abbruchsignal ausgelöst wurde.
7
throw new DOMException("Stream processing aborted by caller", "AbortError");
Wirft einen standardisierten AbortError, um die Verarbeitung sofort zu stoppen.
8
yield item;
Gibt das gültige Datenstromelement an den Konsumenten weiter.