| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/API/WritableStream/getWriter | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Mai 2022 browserbergreifend verfgbar.
Hinweis: Diese Funktion ist in Web Workers verfgbar.
Die getWriter()-Methode der WritableStream-Schnittstelle gibt eine neue Instanz von WritableStreamDefaultWriter zurck und sperrt den Stream fr diese Instanz. Solange der Stream gesperrt ist, kann kein anderer Writer erworben werden, bis dieser freigegeben wird.
getWriter()
Keine.
Eine WritableStreamDefaultWriter-Objektinstanz.
TypeErrorDer Stream, fr den Sie versuchen, einen Writer zu erstellen, ist entweder kein WritableStream oder er ist bereits fr einen anderen Writer gesperrt.
Das folgende Beispiel veranschaulicht mehrere Funktionen dieser Schnittstelle. Es zeigt die Erstellung des WritableStream mit einem benutzerdefinierten Sink und einer von der API bereitgestellten Warteschlangenstrategie. Dann wird eine Funktion namens sendMessage() aufgerufen, die den neu erstellten Stream und einen String bergibt. Innerhalb dieser Funktion ruft es die getWriter()-Methode des Streams auf, die eine Instanz von WritableStreamDefaultWriter zurckgibt. Ein forEach()-Aufruf wird verwendet, um jedes Chunk des Strings in den Stream zu schreiben. Schlielich geben write() und close() Promises zurck, die verarbeitet werden, um mit dem Erfolg oder Misserfolg von Chunks und Streams umzugehen.
const list = document.querySelector("ul");
function sendMessage(message, writableStream) {
// defaultWriter is of type WritableStreamDefaultWriter
const defaultWriter = writableStream.getWriter();
const encoder = new TextEncoder();
const encoded = encoder.encode(message);
encoded.forEach((chunk) => {
defaultWriter.ready
.then(() => defaultWriter.write(chunk))
.then(() => {
console.log("Chunk written to sink.");
})
.catch((err) => {
console.log("Chunk error:", err);
});
});
// Call ready again to ensure that all chunks are written
// before closing the writer.
defaultWriter.ready
.then(() => {
defaultWriter.close();
})
.then(() => {
console.log("All chunks written");
})
.catch((err) => {
console.log("Stream error:", err);
});
}
const decoder = new TextDecoder("utf-8");
const queuingStrategy = new CountQueuingStrategy({ highWaterMark: 1 });
let result = "";
const writableStream = new WritableStream(
{
// Implement the sink
write(chunk) {
return new Promise((resolve, reject) => {
const buffer = new ArrayBuffer(1);
const view = new Uint8Array(buffer);
view[0] = chunk;
const decoded = decoder.decode(view, { stream: true });
const listItem = document.createElement("li");
listItem.textContent = `Chunk decoded: ${decoded}`;
list.appendChild(listItem);
result += decoded;
resolve();
});
},
close() {
const listItem = document.createElement("li");
listItem.textContent = `[MESSAGE RECEIVED] ${result}`;
list.appendChild(listItem);
},
abort(err) {
console.log("Sink error:", err);
},
},
queuingStrategy,
);
sendMessage("Hello, world.", writableStream);
Den vollstndigen Code finden Sie in unserem einfachen Writer-Beispiel.
| Spezifikation |
|---|
| Streams # ref-for-ws-get-writer |
WritableStreamByteLengthQueuingStrategyCountQueuingStrategyReadableByteStreamControllerReadableStreamReadableStreamBYOBReaderReadableStreamBYOBRequestReadableStreamDefaultControllerReadableStreamDefaultReaderResponse.bodyTransformStreamTransformStreamDefaultControllerWindow.fetch()WritableStreamDefaultControllerWritableStreamDefaultWriterDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |