javascript / expert
Snippet
Verarbeitung von ReadableStream-Antwort-Chunks über benutzerdefinierte asynchrone Iteratoren
Nutzt asynchrone Generatorfunktionen und for-await-of-Schleifen zur sequenziellen Verarbeitung von HTTP-Stream-Antworten in Svelte-Komponenten unter Gewährleistung der Reader-Freigabe.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
export async function* streamChunks(response) {const reader = response.body.getReader();const decoder = new TextDecoder();try {while (true) {const { done, value } = await reader.read();if (done) break;yield decoder.decode(value, { stream: true });}} finally {reader.releaseLock();}}export async function consumeStreamInSvelte(response, onChunk) {for await (const chunk of streamChunks(response)) {onChunk(chunk);}}
svelte
Erklärung
1
export async function* streamChunks(response) {
Deklariert eine asynchrone Generatorfunktion, die eine AsyncIterable-Schnittstelle zurückgibt.
2
yield decoder.decode(value, { stream: true });
Dekodiert binären Puffer in String-Text und übergibt die Kontrolle an die Schleife.
3
reader.releaseLock();
Gibt die Sperre des Stream-Readers im finally-Block unabhängig vom Beendigungsmodus frei.
4
for await (const chunk of streamChunks(response)) {
Iteriert asynchron über eingehende Stream-Text-Chunks in nicht-blockierenden Event-Loop-Ticks.