Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
TransformStreamDefaultController
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juni 2022.
Hinweis: Diese Funktion ist inWeb Workers verfügbar.
DasTransformStreamDefaultController-Interface derStreams API bietet Methoden zur Manipulation des zugehörigenReadableStream undWritableStream.
Beim Erstellen einesTransformStream wird dasTransformStreamDefaultController erstellt. Es hat daher keinen Konstruktor. Eine Instanz vonTransformStreamDefaultController erhält man über die Callback-Methoden vonTransformStream().
In diesem Artikel
Instanzeigenschaften
TransformStreamDefaultController.desiredSizeSchreibgeschütztGibt die gewünschte Größe zurück, um die lesbare Seite der internen Warteschlange des Streams zu füllen.
Instanzmethoden
TransformStreamDefaultController.enqueue()Stellt ein Chunk (einzelnes Datenstück) in der lesbaren Seite des Streams in die Warteschlange.
TransformStreamDefaultController.error()Fehler sowohl die lesbare als auch die beschreibbare Seite des Transform-Streams.
TransformStreamDefaultController.terminate()Schließt die lesbare Seite und fehlerhaft die beschreibbare Seite des Streams.
Beispiele
Im folgenden Beispiel leitet ein Transform-Stream alle empfangenen Chunks alsUint8Array-Werte weiter, wobei die Methodenerror() undenqueue() verwendet werden.
const transformContent = { start() {}, // required. async transform(chunk, controller) { chunk = await chunk; switch (typeof chunk) { case "object": // just say the stream is done I guess if (chunk === null) { controller.terminate(); } else if (ArrayBuffer.isView(chunk)) { controller.enqueue( new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength), ); } else if ( Array.isArray(chunk) && chunk.every((value) => typeof value === "number") ) { controller.enqueue(new Uint8Array(chunk)); } else if ( typeof chunk.valueOf === "function" && chunk.valueOf() !== chunk ) { this.transform(chunk.valueOf(), controller); // hack } else if ("toJSON" in chunk) { this.transform(JSON.stringify(chunk), controller); } break; case "symbol": controller.error("Cannot send a symbol as a chunk part"); break; case "undefined": controller.error("Cannot send undefined as a chunk part"); break; default: controller.enqueue(this.textencoder.encode(String(chunk))); break; } }, flush() { /* do any destructor work here */ },};class AnyToU8Stream extends TransformStream { constructor() { super({ ...transformContent, textencoder: new TextEncoder() }); }}Spezifikationen
| Specification |
|---|
| Streams> # ts-default-controller-class> |