Baseline Widely available
ReadableStream
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã® tee()
ã¡ã½ããã¯ãç¾å¨ã®èªã¿åãå¯è½ãªã¹ããªã¼ã ãåé
ããçµæã® 2 ã¤ã®åå²ãæ°ãã ReadableStream
ã¤ã³ã¹ã¿ã³ã¹ã¨ãã¦å«ã 2 ã¤ã®è¦ç´ ã®é
åãè¿ãã¾ãã
ããã¯ã2 ã¤ã®ãªã¼ãã¼ãã¹ããªã¼ã ãåæã«ãããããç°ãªãé度ã§èªã¿åããã¨ãã§ããããã«ããå ´åã«ä¾¿å©ã§ãã ä¾ãã°ããµã¼ãã¼ããã¬ã¹ãã³ã¹ãåå¾ãã¦ãã©ã¦ã¶ã¼ã«ã¹ããªã¼ã å ¥åããããããµã¼ãã¹ã¯ã¼ã«ã¼ã®ãã£ãã·ã¥ã«ãã¹ããªã¼ã å ¥åãããå ´åã¯ããµã¼ãã¹ã¯ã¼ã«ã¼ã§ãããè¡ããã¨ãã§ãã¾ããã¬ã¹ãã³ã¹ã®æ¬ä½ãè¤æ°å使ç¨ãããã¨ã¯ã§ããªãããããããè¡ãã«ã¯ 2 ã¤ã®ã³ãã¼ãå¿ è¦ã§ãã
åé
ããã¹ããªã¼ã ã¯ã 2 ã¤ã® ReadableStream
ã®åå²ã®ãã¡ãæ¶è²»é度ã®éãæ¹ã®é度ã§é¨åçã«èå§ã®ä¿¡å·ãåºããæªèªãã¼ã¿ã¯ãå¶éãèå§ãªãã«æ¶è²»é度ã®é
ãæ¹ã® ReadableStream
ã«å
é¨ã§å¾
ã¡è¡åã«å
¥ãããã¾ãã ã¤ã¾ãã両æ¹ã®åå²ã®å
é¨ãã¥ã¼ã«æªèªã®è¦ç´ ãããå ´åãå
ã® ReadableStream
ã®ã³ã³ããã¼ã©ã®å
é¨ãã¥ã¼ãåã¾ãå§ãããã® desiredSize
⤠0 ã¾ãã¯ãã¤ãã¹ããªã¼ã ã®ã³ã³ããã¼ã©ã¼ã® desiredSize
⤠0 ã«ãªãã¨ãã³ã³ããã¼ã©ã¼ã¯ pull(controller)
ãå¼ã³åºãã®ããæ°ãã new ReadableStream()
ã«æ¸¡ãããå
ã®å
¥åã«å¯¾ãã¦åæ¢ãã¾ãã䏿¹ã®åå²ã®ã¿ãæ¶è²»ãããå ´åãæ¬æå
¨ä½ãã¡ã¢ãªã¼ä¸ã®å¾
ã¡è¡åã«å
¥ãããã¾ãããããã£ã¦ãé常ã«å¤§ããªã¹ããªã¼ã ã並åã«ç°ãªãé度ã§èªã¿è¾¼ãããã«ãçµã¿è¾¼ã¿ã® tee()
ã使ç¨ããã¹ãã§ã¯ããã¾ããããã®ä»£ãããæ¶è²»é度ã®é
ãæ¹ã®åå²ã®é度ã«å®å
¨ã«èå§ãããããªå®è£
ãæ¢ãã¾ãããã
ã¹ããªã¼ã ãåãæ¶ãã«ã¯ãçµæã®åå²ãã©ã¡ããåãæ¶ãå¿ è¦ãããã¾ããã¹ããªã¼ã ãåé ããã¨ãä¸è¬ã«ããã®éã¯ãã®ã¹ããªã¼ã ãããã¯ãããä»ã®ãªã¼ãã¼ãããã¯ããã®ãé²ãã¾ãã
æ§æ 弿°ãªãã
è¿å¤2 ã¤ã® ReadableStream
ã¤ã³ã¹ã¿ã³ã¹ãå«ã Array
ã
ã½ã¼ã¹ã¹ããªã¼ã 㯠ReadableStream
ã§ã¯ããã¾ããã
次ã®ç°¡åãªä¾ã§ã¯ã以åã«ä½æããã¹ããªã¼ã ããã£ã¼ã¤ã³ã°ããçµæã®ä¸¡æ¹ã®ã¹ããªã¼ã ï¼çæãããé åã® 2 ã¤ã®ã¡ã³ãã¼ã«å«ã¾ããï¼ãã2 ã¤ã®ã¹ããªã¼ã ãããã¼ã¿ãèªã¿åããåã¹ããªã¼ã ã®ãã£ã³ã¯ã UI ã®ç°ãªãé¨åã«é çªã«å°å·ãã颿°ã«æ¸¡ãã¾ãã å®å ¨ãªã³ã¼ãã«ã¤ãã¦ã¯ãåç´ãª tee ã®ä¾ãåç §ãã¦ãã ããã
function teeStream() {
const teedOff = stream.tee();
fetchStream(teedOff[0], list2);
fetchStream(teedOff[1], list3);
}
function fetchStream(stream, list) {
const reader = stream.getReader();
let charsReceived = 0;
// read() ã¯ãå¤ãåãåã£ãã¨ãã«è§£æ±ºãããããã¹ãè¿ãã¾ã
reader.read().then(function processText({ done, value }) {
// çµæãªãã¸ã§ã¯ãã«ã¯ 2 ã¤ã®ããããã£ãå«ã¾ãã¾ãã
// done - ã¹ããªã¼ã ããã¹ã¦ã®ãã¼ã¿ãæ¢ã«æä¾ãã¦ããå ´å㯠trueã
// value - ä¸é¨ã®ãã¼ã¿ã done ã true ã®å ´åã常㫠undefinedã
if (done) {
console.log("Stream complete");
return;
}
// ãã§ããããã¹ããªã¼ã ã®å¤ã¯ Uint8Array ã§ã
charsReceived += value.length;
const chunk = value;
let listItem = document.createElement("li");
listItem.textContent = `Read ${charsReceived} characters so far. Current chunk = ${chunk}`;
list.appendChild(listItem);
// ããã«èªã¿ããã®é¢æ°ãå度å¼ã³åºãã¾ã
return reader.read().then(processText);
});
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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