JavaScript éçºè ã¨ãã¦ãããã°ã©ã ã§ã¹ããªã¼ã ã«ãã¼ã¿ãæ¸ãè¾¼ããã¨ã¯ã¨ã¦ã便å©ã§ãããã®è¨äºã§ã¯ãã¹ããªã¼ã API ã®æ¸ãè¾¼ã¿å¯è½ãªã¹ããªã¼ã ã®æ©è½ã«ã¤ãã¦èª¬æãã¾ãã
ã¡ã¢: ãã®è¨äºã¯ãæ¸ãè¾¼ã¿å¯è½ãªã¹ããªã¼ã ã®ç¨éãçè§£ããé«ã¬ãã«ã®æ¦å¿µãçè§£ãã¦ãããã¨ãåæã¨ãã¦ãã¾ãã ããã§ãªãå ´åã¯ãã¾ãã¹ããªã¼ã ã®æ¦å¿µã¨ä½¿ç¨æ¹æ³ã®æ¦è¦ã¨ã¹ããªã¼ã API ã®æ¦å¿µã®è¨äºãèªãã§ãããæ»ã£ã¦ãããã¨ããå§ããã¾ãã
ã¡ã¢: èªã¿åãå¯è½ãªã¹ããªã¼ã ã«é¢ããæ å ±ãæ¢ãã¦ããå ´åã¯ã代ããã«èªã¿åãå¯è½ãªã¹ããªã¼ã ã®ä½¿ç¨ãèªã¿åãå¯è½ãªãã¤ãã¹ããªã¼ã ã®ä½¿ç¨ãã覧ãã ããã
ä¾ã®ç´¹ä»dom-examples/streams ãªãã¸ããªã¼ã«ã¯ãåç´ãªã©ã¤ã¿ã¼ã®ä¾ï¼Simple writer exampleï¼ãããã¾ãï¼ã©ã¤ããåç §ï¼ã ããã¯ãæå®ãããã¡ãã»ã¼ã¸ãåå¾ãã¦æ¸ãè¾¼ã¿å¯è½ãªã¹ããªã¼ã ã«æ¸ãè¾¼ã¿ãã¹ããªã¼ã ã«æ¸ãè¾¼ã¾ããã¨ãã« UI ã«åãã£ã³ã¯ã表示ããæ¸ãè¾¼ã¿ãçµäºãã㨠UI ã«ã¡ãã»ã¼ã¸å ¨ä½ã表示ãã¾ãã
æ¸ãè¾¼ã¿å¯è½ãªã¹ããªã¼ã ã®ä»çµã¿æ¸ãè¾¼ã¿å¯è½ãªã¹ããªã¼ã æ©è½ã®ãã¢ã®ä»çµã¿ãè¦ã¦ã¿ã¾ãããã
æ¸ãè¾¼ã¿å¯è½ãªã¹ããªã¼ã ã®æ§ç¯æ¸ãè¾¼ã¿å¯è½ãªã¹ããªã¼ã ã使ããã«ã¯ãWritableStream()
ã³ã³ã¹ãã©ã¯ã¿ã¼ã使ç¨ãã¾ãã æ§æã¯æåã¯è¤éã«è¦ãã¾ãããå®éã«ã¯ããã»ã©æªãã¯ããã¾ããã
æ§æã®éª¨çµã¿ã¯æ¬¡ã®ããã«ãªãã¾ãã
const stream = new WritableStream(
{
start(controller) {},
write(chunk, controller) {},
close(controller) {},
abort(reason) {},
},
{
highWaterMark: 3,
size: () => 1,
},
);
ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯å¼æ°ã¨ã㦠2 ã¤ã®ãªãã¸ã§ã¯ããåãã¾ãã æåã®ãªãã¸ã§ã¯ãã¯å¿
é ã§ããããã¼ã¿ã®æ¸ãè¾¼ã¿å
ã®åºã«ãªãã·ã³ã¯ã®ã¢ãã«ã JavaScript ã§ä½æãã¾ãã 2 çªç®ã®ãªãã¸ã§ã¯ãã¯ãªãã·ã§ã³ã§ãããã¹ããªã¼ã ã«ä½¿ç¨ããã«ã¹ã¿ã ã®ãã¥ã¼ã¤ã³ã°æ¦ç¥ãæå®ã§ãã ByteLengthQueuingStrategy
ã¾ã㯠CountQueuingStrategy
ã®ã¤ã³ã¹ã¿ã³ã¹ã®å½¢å¼ãã¨ãã¾ãã
次ã®ããã«æåã®ãªãã¸ã§ã¯ãã«ã¯æå¤§ 4 ã¤ã®ã¡ã³ãã¼ãå«ãããã¨ãã§ãã¾ããããããã¯ãã¹ã¦ãªãã·ã§ã³ã§ãã
start(controller)
â WritableStream
ãæ§ç¯ãããç´å¾ã« 1 åã ãå¼ã³åºãããã¡ã½ããã ãã®ã¡ã½ããå
ã«ã¯ãã¹ããªã¼ã æ©è½ãè¨å®ããã³ã¼ããå«ããå¿
è¦ãããã¾ãã ä¾ãã°ãåºã«ãªãã·ã³ã¯ã¸ã®ã¢ã¯ã»ã¹ãåå¾ãã¾ããwrite(chunk,controller)
â æ°ãããã£ã³ã¯ï¼chunk
弿°ã§æå®ï¼ãåºã«ãªãã·ã³ã¯ã«æ¸ãè¾¼ãæºåãã§ãããã³ã«ç¹°ãè¿ãå¼ã³åºãããã¡ã½ãããclose(controller)
â ã¹ããªã¼ã ã¸ã®ãã£ã³ã¯ã®æ¸ãè¾¼ã¿ãå®äºãããã¨ãã¢ããªãéç¥ããå ´åã«å¼ã³åºãããã¡ã½ããã åºã«ãªãã·ã³ã¯ã¸ã®æ¸ãè¾¼ã¿ãå®äºããã¢ã¯ã»ã¹ãè§£æ¾ããããã«å¿
è¦ãªãã¨ã¯ä½ã§ãè¡ãå¿
è¦ãããã¾ããabort(reason)
â ã¹ããªã¼ã ãçªç¶éãã¦ã¨ã©ã¼ç¶æ
ã«ãããã¨ã¢ããªãéç¥ããå ´åã«å¼ã³åºãããã¡ã½ããããã®ä¾ã®ã³ã³ã¹ãã©ã¯ã¿ã¼å¼ã³åºãã¯æ¬¡ã®ããã«ãªãã¾ãã
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.error("Sink error:", err);
},
},
queuingStrategy,
);
write()
ã¡ã½ããã«ã¯ãæ¸ãè¾¼ã¾ããåãã£ã³ã¯ã UI ã«æ¸ãè¾¼ããå½¢å¼ã«ãã³ã¼ãããã³ã¼ããå«ããããã¹ãå«ã¾ãã¦ãã¾ãã ããã¯ãåãã£ã³ã¯ãå®éã«æ¸ãè¾¼ã¾ããã¨ãã«å¼ã³åºããã¾ãï¼æ¬¡ã®ã»ã¯ã·ã§ã³ãåç
§ï¼ãclose()
ã¡ã½ããã¯ãæ¸ãè¾¼ã¿ãçµäºããã¨èªåçã«å¼ã³åºããã¾ã â ãã³ã¼ããããçµæå
¨ä½ã 1 ã¤ã®æååã§ UI ã«åºåãã¾ããabort()
ã¡ã½ããã¯ãã¹ããªã¼ã ã䏿ãããå ´åã«ã³ã³ã½ã¼ã«ã«ã¨ã©ã¼ãåºåããã ãã§ããå®éã«ã¹ããªã¼ã ã«ã³ã³ãã³ããæ¸ãè¾¼ãã«ã¯ã次ã®ããã« sendMessage()
颿°ãå¼ã³åºãã¦ãæ¸ãè¾¼ãã¡ãã»ã¼ã¸ã¨æ¸ãè¾¼ã¿å
ã®ã¹ããªã¼ã ãæ¸¡ãã¾ãã
sendMessage("Hello, world.", writableStream);
sendMessage()
ã®å®ç¾©ã¯æ¬¡ã®ããã«ãªãã¾ãã
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.error("Chunk error:", err));
});
// ã©ã¤ã¿ã¼ãéããåã«ãã¹ã¦ã®ãã£ã³ã¯ã確å®ã«
// æ¸ãè¾¼ã¾ããããã«ãready ãå度å¼ã³åºãã¾ãã
defaultWriter.ready
.then(() => defaultWriter.close())
.then(() => console.log("All chunks written"))
.catch((err) => console.error("Stream error:", err));
}
ãããã£ã¦ãããã§ã¯ãWritableStream.getWriter()
ã使ç¨ãã¦ã¹ããªã¼ã ã«ãã£ã³ã¯ãæ¸ãè¾¼ãã©ã¤ã¿ã¼ã使ãã¾ãã ããã«ãããWritableStreamDefaultWriter
ã¤ã³ã¹ã¿ã³ã¹ã使ããã¾ãã
ã¾ããé¢é£ããã³ã³ã¹ãã©ã¯ã¿ã¼ã使ç¨ãã¦æ°ãã TextEncoder
ã¤ã³ã¹ã¿ã³ã¹ã使ããã¡ãã»ã¼ã¸ããã£ã³ã¯ã«ã¨ã³ã³ã¼ããã¦ã¹ããªã¼ã ã«å
¥ãã¾ãã
ã¨ã³ã³ã¼ãããããã£ã³ã¯ã使ç¨ãã¦ãçµæã®é
åã§ forEach()
ãå¼ã³åºãã¾ãã ãã®ãããã¯å
ã§ãWritableStreamDefaultWriter.ready
ã使ç¨ãã¦ãã©ã¤ã¿ã¼ã«å¥ã®ãã£ã³ã¯ãæ¸ãè¾¼ãæºåãã§ãã¦ãããã©ããã確èªãã¾ãã ready
ã¯ããã®å ´åã«æºãããããããã¹ãè¿ãã¾ãã ãã®ä¸ã§ã WritableStreamDefaultWriter.write()
ãå¼ã³åºãã¦ãå®éã«ã¹ããªã¼ã ã«ãã£ã³ã¯ãæ¸ãè¾¼ã¿ã¾ãã ããã«ãããåè¿°ã®ããã«ãWritableStream()
ã³ã³ã¹ãã©ã¯ã¿ã¼å
ã§æå®ããã write()
ã¡ã½ãããèµ·åããã¾ãã
ãã£ã³ã¯ããã¹ã¦æ¸ãè¾¼ã¾ããå¾ãæå¾ã®ãã£ã³ã¯ã®æ¸ãè¾¼ã¿ãå®äºãããã¹ã¦ã®ä½æ¥ãå®äºãããã¨ã確èªããããã«ãããä¸åº¦ ready
ã®ãã§ãã¯ãå®è¡ãã¾ãããã® ready
ã®ãã§ãã¯ãå®äºããã¨ã WritableStreamDefaultWriter.close()
ãå¼ã³åºãã¦ã¹ããªã¼ã ãéãã¾ãã ããã«ãããåè¿°ã®ããã«ã WritableStream()
ã³ã³ã¹ãã©ã¯ã¿ã¼å
ã§æå®ããã close()
ã¡ã½ãããèµ·åããã¾ãã
WritableStream()
æ§æã®éª¨çµã¿ãå¦ç¿ããã¨ãã«æ°ã¥ãã§ãããããstart()
ãwrite()
ãclose()
ã®åã¡ã½ããã«ã¯ããªãã·ã§ã³ã§ controller
弿°ã渡ããã¨ãã§ãã¾ãã ããã«ã¯ã WritableStreamDefaultController
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ãå«ã¾ãã¾ãã ããã¯ãéçºè
ãå¿
è¦ã«å¿ãã¦ã¹ããªã¼ã ãããã«å¶å¾¡ããããã«ä½¿ç¨ã§ãã¾ãã
ç¾å¨ããã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ä½¿ç¨ã§ããã¡ã½ãã㯠WritableStreamDefaultController.error()
ã®ã¿ã§ãã ãã®ã¡ã½ãããå¼ã³åºãã¨ãã¹ããªã¼ã ã¨ã®ä»å¾ã®ç¸äºä½ç¨ã§ã¨ã©ã¼ãçºçãã¾ããããã¯ãã¢ããªã®å¥ã®é¨åã«åé¡ãçºçããã¨ãã«ãã¨ã©ã¼ãã¹ããªã¼ã ã«ä¼æ¬ããã¦ãã·ã¹ãã å
¨ä½ããããã«å¤±æããããã«ãããå ´åã«ä¾¿å©ã§ããããã¯ãã´ããã¹ããªã¼ã ã«é»ã£ã¦æ¸ãè¾¼ã¾ããï¼ã¾ãã¯åæ§ã®æªããäºæ
ã«ãªãï¼å±éºãåãã®ã§ã¯ãªãããã®ãããªäºæ
ãé¿ããããã§ãã
ä¸è¨ã®ããã«ãæ¸ãè¾¼ã¿ãçµäºãã㨠close()
ã¡ã½ãããå¼ã³åºããWritableStream()
ã³ã³ã¹ãã©ã¯ã¿ã¼å
ã§æå®ããã close()
ã¡ã½ãããèµ·åãã¾ãã
WritableStreamDefaultWriter.abort()
ãå¼ã³åºãã¦ã¹ããªã¼ã ã䏿¢ãããã¨ãã§ãã¾ãã
éãã¯ã close ãå¼ã³åºãã¨ãã¹ããªã¼ã ãéããããåã«ã以åã«ãã¥ã¼ã«å ¥ãããããã£ã³ã¯ãæ¸ãè¾¼ã¾ããçµäºãããã¨ã§ãã
abort()
ãå¼ã³åºãã¨ã以åã«ãã¥ã¼ã«å
¥ãããããã£ã³ã¯ã¯ããã«ç ´æ£ãããã¹ããªã¼ã ã¯ã¨ã©ã¼ç¶æ
ã«ç§»è¡ãã¾ãã ã¾ããããã«ãããWritableStream()
ã³ã³ã¹ãã©ã¯ã¿ã¼ã§æå®ããã abort()
ã¡ã½ãããå¼ã³åºããã¾ãã
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