Baseline Widely available
write()
㯠WritableStreamDefaultWriter
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¡ã½ããã§ã渡ããããã¼ã¿ã®ãã£ã³ã¯ã WritableStream
ã¨ãã®åºã«ãªãã·ã³ã¯ã«æ¸ãè¾¼ã¿ããã®å¾ãæ¸ãè¾¼ã¿æä½ã®æåã¾ãã¯å¤±æã示ãããã«è§£æ±ºããã Promise
ãè¿ãã¾ãã
ãæåãã®æå³ã¯ãåºã«ãªãã·ã³ã¯æ¬¡ç¬¬ã§ãããã¨ã«æ³¨æãã¦ãã ããã åã«ãã£ã³ã¯ãåãå ¥ãããããã¨ã示ãã¦ããã ãã§ãå¿ ãããæçµçãªå®å ã«å®å ¨ã«ä¿åããã¦ããã¨ã¯éãã¾ããã
æ§æ 弿°chunk
WritableStream
ã«æ¸¡ããã¤ããªãã¼ã¿ã®ãããã¯ã
Promise
ã§ãã æ¸ãè¾¼ã¿ãæåãã㨠undefined
ã§æºããããæ¸ãè¾¼ã¿ããã»ã¹ãéå§ãããåã«æ¸ãè¾¼ã¿ã失æãããã¹ããªã¼ã ãã¨ã©ã¼ã«ãªãã¨æå¦ããã¾ãã
TypeError
対象ã®ã¹ããªã¼ã ã¯æ¸ãè¾¼ã¿å¯è½ãªã¹ããªã¼ã ã§ã¯ãªããããªã¼ãã¼ããªãå ´åã
次ã®ä¾ã¯ãã«ã¹ã¿ã ã®ã·ã³ã¯ã¨ API æä¾ã®ãã¥ã¼ã¤ã³ã°æ¦ç¥ã使ç¨ãã WritableStream
ã®ä½æã示ãã¦ãã¾ãã æ¬¡ã«ãsendMessage()
ã¨ãã颿°ãå¼ã³åºããæ°ãã使ãããã¹ããªã¼ã ã¨æååãæ¸¡ãã¾ãã ãã®é¢æ°å
ã§ãWritableStreamDefaultWriter
ã®ã¤ã³ã¹ã¿ã³ã¹ãè¿ãã¹ããªã¼ã ã® getWriter()
ã¡ã½ãããå¼ã³åºãã¾ãã forEach()
å¼ã³åºãã使ç¨ãã¦ãæååã®åãã£ã³ã¯ãã¹ããªã¼ã ã«æ¸ãè¾¼ã¿ã¾ãã æå¾ã«ãwrite()
ããã³ close()
ã¯ããã£ã³ã¯ã¨ã¹ããªã¼ã ã®æåã¾ãã¯å¤±æã«å¯¾å¦ããããã®ãããã¹ãè¿ãã¾ãã
const list = document.querySelector("ul");
function sendMessage(message, writableStream) {
// defaultWriter 㯠WritableStreamDefaultWriter åã§ã
const defaultWriter = writableStream.getWriter();
const encoder = new TextEncoder();
const encoded = encoder.encode(message, { stream: true });
encoded.forEach((chunk) => {
defaultWriter.ready
.then(() => defaultWriter.write(chunk))
.then(() => {
console.log("Chunk written to sink.");
})
.catch((err) => {
console.log("Chunk error:", err);
});
});
// ã©ã¤ã¿ã¼ãéããåã«ãã¹ã¦ã®ãã£ã³ã¯ã
// 確å®ã«æ¸ãè¾¼ã¾ããããã«ãready ãå度å¼ã³åºãã¾ãã
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(
{
// ã·ã³ã¯ã®å®è£
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);
å®å ¨ãªã³ã¼ãã¯ãåç´ãªã©ã¤ã¿ã¼ã®ä¾ã«ããã¾ãã
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§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