Baseline Widely available *
WritableStream
ã¯ã¹ããªã¼ã API ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ãã¹ããªã¼ãã³ã°ãã¼ã¿ãã·ã³ã¯ã¨å¼ã°ããå®å
ã«æ¸ãè¾¼ãããã®æ¨æºçãªæ½è±¡åãæä¾ãã¾ãã ãã®ãªãã¸ã§ã¯ãã«ã¯ãèå§ã¨ãã¥ã¼ã¤ã³ã°ãçµã¿è¾¼ã¾ãã¦ãã¾ãã
WritableStream
ã¯ç§»è²å¯è½ãªãã¸ã§ã¯ãã§ãã
WritableStream()
æ°ãã WritableStream
ãªãã¸ã§ã¯ãã使ãã¾ãã
WritableStream.locked
èªåå°ç¨
è«çå¤ã§ã WritableStream
ãã©ã¤ã¿ã¼ã«ããã¯ããã¦ãããã©ããã示ãã¾ãã
WritableStream.abort()
ã¹ããªã¼ã ã䏿¢ãããããã¥ã¼ãµã¼ãã¹ããªã¼ã ã«æ£å¸¸ã«æ¸ãè¾¼ããã¨ãã§ããªããªãããã¥ã¼ã«å ¥ããããæ¸ãè¾¼ã¿ãç ´æ£ããã¦ããã«ã¨ã©ã¼ç¶æ ã«ç§»è¡ãããã¨ãéç¥ãã¾ãã
WritableStream.close()
ã¹ããªã¼ã ãéãã¾ãã
WritableStream.getWriter()
WritableStreamDefaultWriter
ã®æ°ããã¤ã³ã¹ã¿ã³ã¹ãè¿ãããã®ã¤ã³ã¹ã¿ã³ã¹ã«ã¹ããªã¼ã ãããã¯ãã¾ãã ã¹ããªã¼ã ãããã¯ããã¦ããéããã®ã©ã¤ã¿ã¼ãéæ¾ãããã¾ã§ä»ã®ã©ã¤ã¿ã¼ãåå¾ãããã¨ã¯ã§ãã¾ããã
次ã®ä¾ã¯ããã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ããã¤ãã®æ©è½ã示ãã¦ãã¾ãã ã«ã¹ã¿ã ã®ã·ã³ã¯ã¨ 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);
å®å ¨ãªã³ã¼ãã¯ãåç´ãªã©ã¤ã¿ã¼ã®ä¾ã«ããã¾ãã
èå§èå§ã API ã§ã©ã®ããã«å¯¾å¿ãã¦ãããã«ãããããã³ã¼ãã§ã®å®è£ ã¯ãã¾ãæç½ã§ã¯ãªãããããã¾ããã èå§ãã©ã®ããã«å®è£ ããã¦ãããã確èªããããã«ã¯ã次㮠3 ã¤ã®ãã¨ã確èªãã¦ãã ããã
highWaterMark
ããããã£ï¼35 è¡ç®ï¼ã¯ãWritableStream
ã¤ã³ã¹ã¿ã³ã¹ã 1 åã® write()
æä½ã§å¦çãããã¼ã¿ã®æå¤§éãè¨å®ãã¾ãã ãã®ä¾ã§ã¯ãdefaultWriter.write()
ã«éä¿¡ã§ãããã¼ã¿ã®æå¤§éã§ãï¼11 è¡ç®ï¼ãdefaultWriter.ready
ããããã£ã¯ãã·ã³ã¯ï¼WritableStream
ã³ã³ã¹ãã©ã¯ã¿ã¼ã®æåã®ããããã£ï¼ããã¼ã¿ã®æ¸ãè¾¼ã¿ãå®äºããã¨è§£æ±ºãããããã¹ãè¿ãã¾ãã ãã¼ã¿ã½ã¼ã¹ã¯ãããã«ãã¼ã¿ãæ¸ãè¾¼ãï¼11 è¡ç®ï¼ãã close()
ï¼24 è¡ç®ï¼ãå¼ã³åºããã¨ãã§ãã¾ãã close()
ã®å¼ã³åºããæ©ãããã¨ããã¼ã¿ã®æ¸ãè¾¼ã¿ã妨ããããå¯è½æ§ãããã¾ãã ãã®ããããã®ä¾ã§ã¯ defaultWriter.ready
ã 2 åå¼ã³åºãã¦ãã¾ãï¼9 è¡ç®ã¨ 22 è¡ç®ï¼ãwrite()
ã¡ã½ããã«ãã£ã¦è¿ããã Promise
ï¼40 è¡ç®ï¼ã¯ãWritableStream
ã¨ãã®ã©ã¤ã¿ã¼ã«ãã㤠defaultWriter.ready
ã解決ããããä¼ãã¾ãã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