Baseline Widely available *
ReadableStream
ã¯ã¹ããªã¼ã API ã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§ããã¤ããã¼ã¿ã®èªã¿åãå¯è½ãªã¹ããªã¼ã ã表ãã¾ãã Fetch API ã¯ã ReadableStream
ã®å
·ä½çãªã¤ã³ã¹ã¿ã³ã¹ãResponse
ãªãã¸ã§ã¯ãã® body
ããããã£ãä»ãã¦æä¾ãã¾ãã
ReadableStream
ã¯ç§»è²å¯è½ãªãã¸ã§ã¯ãã§ãã
ReadableStream()
æå®ããããã³ãã©ã¼ããèªã¿åãå¯è½ãªã¹ããªã¼ã ã®ãªãã¸ã§ã¯ãã使ãã¦è¿ãã¾ãã
ReadableStream.locked
èªåå°ç¨
è«çå¤ã§ãèªã¿åãå¯è½ãªã¹ããªã¼ã ããªã¼ãã¼ã«ããã¯ããã¦ãããã©ãããè¿ãã¾ãã
ReadableStream.from()
Experimental
æå®ãããå復å¯è½ãªãã¸ã§ã¯ãã¾ãã¯éåæå復å¯è½ãªãã¸ã§ã¯ãï¼é
åãéåãéåæã¸ã§ãã¬ã¼ã¿ã¼ãªã©ï¼ãã ReadableStream
ãè¿ãã¾ãã
ReadableStream.cancel()
ã¹ããªã¼ã ããã£ã³ã»ã«ãããã¨ãã«è§£æ±ºãã Promise
ãè¿ãã¾ãããã®ã¡ã½ãããå¼ã³åºãããã¨ãã³ã³ã·ã¥ã¼ãã¼ãã¹ããªã¼ã ã¸ã®é¢å¿ã失ã£ããã¨ãéç¥ãã¾ããä¸ãããã reason
弿°ã¯åºã«ãªãã½ã¼ã¹ã«ä¸ãããã使ç¨ããå ´åã¨ä½¿ç¨ããªãå ´åãããã¾ãã
ReadableStream.getReader()
ãªã¼ãã¼ã使ããã¹ããªã¼ã ãããã¯ãã¾ãã ã¹ããªã¼ã ãããã¯ããã¦ããéã¯ããã®ãªã¼ãã¼ãè§£æ¾ãããã¾ã§ä»ã®ãªã¼ãã¼ãåå¾ã§ãã¾ããã
ReadableStream.pipeThrough()
夿ã¹ããªã¼ã ã¾ãã¯ãã®ä»ã®æ¸ãè¾¼ã¿å¯è½/èªã¿åãå¯è½ãªãã¢ãä»ãã¦ãç¾å¨ã®ã¹ããªã¼ã ããã¤ãæ¥ç¶ãããã§ã¼ã³å¯è½ãªæ¹æ³ãæä¾ãã¾ãã
ReadableStream.pipeTo()
ç¾å¨ã® ReadableStream
ãæå®ããã WritableStream
ã«æ¥ç¶ãã Promise
ãè¿ãã¾ããããã¯ãã¤ãã³ã°ããã»ã¹ãæ£å¸¸ã«å®äºããã¨ãã«å±¥è¡ãããã¨ã©ã¼ãçºçããå ´åã¯æå¦ããã¾ãã
ReadableStream.tee()
tee
ã¡ã½ããã¯ããã®èªã¿åãå¯è½ãªã¹ããªã¼ã ã tee ããçµæã® 2 ã¤ã®åå²ãå«ã 2 è¦ç´ é
åãæ°ãã ReadableStream
ã¤ã³ã¹ã¿ã³ã¹ã¨ãã¦è¿ãã¾ãã ãããã®åã¹ããªã¼ã ã¯ãåãçä¿¡ãã¼ã¿ãåä¿¡ãã¾ãã
ReadableStream
ã¯éåæå復å¯è½ãããã³ã«ãå®è£
ãã¦ãã¾ãã ããã«ããã for await...of
æ§æã使ç¨ãã¦ãã¹ããªã¼ã å
ã®ãã£ã³ã¯ãéåæã«å復å¦çãããã¨ãã§ãã¾ãã
const stream = new ReadableStream(getSomeSource());
for await (const chunk of stream) {
// ããããã® 'chunk' ã§ä½ãããã
}
éåæã¤ãã¬ã¼ã¿ã¼ã¯ããã¼ã¿ããªããªããããããªããã°çµäºããã¾ã§ã¹ããªã¼ã ãæ¶è²»ãã¾ãã ã«ã¼ã㯠break
ãthrow
ãreturn
ã¹ãã¼ãã¡ã³ãã«ãã£ã¦æ©æã«çµäºãããã¨ãã§ãã¾ãã
å復å¦çä¸ã¯ãä»ã®ã³ã³ã·ã¥ã¼ãã¼ããªã¼ãã¼ãåå¾ã§ããªãããã«ã¹ããªã¼ã ãããã¯ããã¾ãï¼æ¢ã«ããã¯ããã¦ããã¹ããªã¼ã ãå復å¦çãããã¨ãã㨠TypeError
ãçºçãã¾ãï¼ã ãã®ããã¯ã¯ã«ã¼ããçµäºããã¨è§£é¤ããã¾ãã
æ¢å®å¤ã§ã¯ãã«ã¼ããçµäºããã¨ã¹ããªã¼ã ãåãæ¶ãããå¯è½æ§ãããã使ç¨ã§ããªããªãã¾ãã ã«ã¼ããæããå¾ãã¹ããªã¼ã ã使ç¨ãç¶ããã«ã¯ãã¹ããªã¼ã ã® values()
ã¡ã½ããã« { preventCancel: true }
ãæ¸¡ãã¦ãã ããã
for await (const chunk of stream.values({ preventCancel: true })) {
// 'chunk' ã§ä½ãããã
break;
}
// ã¹ããªã¼ã ã®ããã®ãªã¼ãã¼ãåå¾ããèªã¿åããç¶ãã ...
ä¾ ã¹ããªã¼ã ã®ãã§ãã
次ã®ä¾ã§ã¯ãå¥ã®ãªã½ã¼ã¹ãããã§ãããã HTML ã®æçããã©ã¦ã¶ã¼ã«ã¹ããªã¼ãã³ã°ããããã«ã人工ç㪠Response
ã使ããã¾ãã
ãã㯠Uint8Array
ã¨çµã¿åããã ReadableStream
ã®ä½¿ç¨æ¹æ³ã示ãã¦ãã¾ãã
fetch("https://www.example.org")
.then((response) => response.body)
.then((rb) => {
const reader = rb.getReader();
return new ReadableStream({
start(controller) {
// 次ã®é¢æ°ã¯åãã¼ã¿ãã£ã³ã¯ãå¦çãã¾ã
function push() {
// done ã¯è«çå¤ã§ãvalue 㯠Uint8Array ã§ã
reader.read().then(({ done, value }) => {
// èªã¿åããã¼ã¿ããããªãå ´å
if (done) {
console.log("done", done);
controller.close();
return;
}
// ãã¼ã¿ãåå¾ããã³ã³ããã¼ã©ã¼çµç±ã§ãã©ã¦ã¶ã¼ã«éä¿¡ãã¾ã
controller.enqueue(value);
// ã³ã³ã½ã¼ã«ã«ãã°ãåºåãã¦ãã£ã³ã¯ã調ã¹ã
console.log(done, value);
push();
});
}
push();
},
});
})
.then((stream) =>
// ã¹ããªã¼ã ã§å¿çãã
new Response(stream, { headers: { "Content-Type": "text/html" } }).text(),
)
.then((result) => {
// Do things with result
console.log(result);
});
éåæã¤ãã¬ã¼ã¿ã¼ãã¹ããªã¼ã ã¸å¤æ
éç㪠from()
ã¡ã½ããã¯ãã¤ãã¬ã¼ã¿ã¼ã夿ãã¾ããä¾ãã° Array
ã Map
, ï¼éåæï¼ã¤ãã¬ã¼ã¿ã¼ãèªã¿åãå¯è½ãªã¹ããªã¼ã ã¸å¤æãã¾ãã
const myReadableStream = ReadableStream.from(iteratorOrAsyncIterator);
from()
ã¡ã½ããã«å¯¾å¿ãã¦ããªããã©ã¦ã¶ã¼ã§ã¯ã代ããã«èªåèªèº«ã§ç¬èªã®èªã¿åãå¯è½ãªã¹ããªã¼ã ã使ãã¦åãçµæãå¾ããã¨ãã§ãã¾ãã
function iteratorToStream(iterator) {
return new ReadableStream({
async pull(controller) {
const { value, done } = await iterator.next();
if (done) {
controller.close();
} else {
controller.enqueue(value);
}
},
});
}
for await...of ãç¨ããã¹ããªã¼ã ã®éåæå復å¦ç
ãã®ä¾ã§ã¯ã fetch()
ã¬ã¹ãã³ã¹ãå¦çããããã« for await...of
ã«ã¼ãã使ç¨ãã¦ãå°çãããã£ã³ã¯ãå復å¦çããæ¹æ³ã示ãã¾ãã
const response = await fetch("https://www.example.org");
let total = 0;
// Iterate response.body (a ReadableStream) asynchronously
for await (const chunk of response.body) {
// Do something with each chunk
// Here we just accumulate the size of the response.
total += chunk.length;
}
// Do something with the total
console.log(total);
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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