Baseline Widely available
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Das TransformStreamDefaultController
-Interface der Streams API bietet Methoden zur Manipulation des zugehörigen ReadableStream
und WritableStream
.
Beim Erstellen eines TransformStream
wird das TransformStreamDefaultController
erstellt. Es hat daher keinen Konstruktor. Eine Instanz von TransformStreamDefaultController
erhält man über die Callback-Methoden von TransformStream()
.
TransformStreamDefaultController.desiredSize
Schreibgeschützt
Gibt die gewünschte GröÃe zurück, um die lesbare Seite der internen Warteschlange des Streams zu füllen.
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.
Im folgenden Beispiel leitet ein Transform-Stream alle empfangenen Chunks als Uint8Array
-Werte weiter, wobei die Methoden error()
und enqueue()
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 Browser-Kompatibilität MDN-Feedback-Box War diese Ãbersetzung hilfreich?
Diese Seite wurde automatisch aus dem Englischen übersetzt.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4