Baseline Widely available *
TransformStream()
ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ãæ°ãã TransformStream
ãªãã¸ã§ã¯ãã使ãã¾ãããã®ãªãã¸ã§ã¯ãã¯ãæ¸ãè¾¼ã¿å¯è½ãªç«¯ç¹ã表ã WritableStream
ã¨ãèªã¿åãå¯è½ãªç«¯ç¹ã表ã ReadableStream
ã® 2 ã¤ã®ã¹ããªã¼ã ã表ãã¾ãã
new TransformStream()
new TransformStream(transformer)
new TransformStream(transformer, writableStrategy)
new TransformStream(transformer, writableStrategy, readableStrategy)
弿°
transformer
çç¥å¯
transformer
ã表ããªãã¸ã§ã¯ããæå®ãããªãã£ãå ´åãã¹ããªã¼ã ã¯åä¸å¤æã¹ããªã¼ã ã¨ãªããæ¸ãè¾¼ã¿å¯è½ãªç«¯ç¹ã«æ¸ãè¾¼ã¾ãããã¹ã¦ã®ãã£ã³ã¯ããã®ã¾ã¾èªã¿åãå¯è½ãªç«¯ç¹ã«è»¢éãã¾ãã
夿ãªãã¸ã§ã¯ãã¯ä»¥ä¸ã®ã¡ã½ãããæã¤ãã¨ãã§ãã¾ããåã¡ã½ããã®ã controller
㯠TransformStreamDefaultController
ã®ã¤ã³ã¹ã¿ã³ã¹ã§ãã
start(controller)
TransformStream
ãæ§ç¯ãããéã«å¼ã³åºããã¾ããé常㯠TransformStreamDefaultController.enqueue()
ã使ç¨ãã¦ãã£ã³ã¯ããã¥ã¼ã«å
¥ãã¾ãã
transform(chunk, controller)
æ¸ãè¾¼ã¿å¯è½ãªç«¯ç¹ã«æ¸ãè¾¼ã¾ãããã£ã³ã¯ã夿ãããæºåãã§ããã¨ãã«å¼ã³åºããã夿ã¹ããªã¼ã ã®ä½æ¥ããã¾ããæ¸ãè¾¼ã¿å¦çã®æåã失æãæç¤ºãããããã¹ãè¿ããã¨ãããã¾ãããã transform()
ã¡ã½ãããä¸ããããªãã£ãå ´åãID 夿ã使ç¨ããããã£ã³ã¯ã¯å¤æ´ãããã«ãã¥ã¼ã«å
¥ãããã¾ãã
flush(controller)
æ¸ãè¾¼ã¿å¯è½ãªç«¯ç¹ã«æ¸ãè¾¼ã¾ãããã£ã³ã¯ããã¹ã¦æ£å¸¸ã«å¤æãããæ¸ãè¾¼ã¿å¯è½ãªç«¯ç¹ãéããããå¾ã«å¼ã³åºããã¾ãã
writableStrategy
çç¥å¯
ãªãã·ã§ã³ã§ã¹ããªã¼ã ã®ãã¥ã¼ã¤ã³ã°æ¦ç¥ãå®ç¾©ãããªãã¸ã§ã¯ãããã㯠2 ã¤ã®å¼æ°ãåãã¾ãã
highWaterMark
éè² ã®æ´æ°ãããã¯ãèå§ãé©ç¨ãããåã«å é¨ãã¥ã¼ã«æ ¼ç´ãããã¨ãã§ãããã£ã³ã¯ã®ç·æ°ãå®ç¾©ãã¾ãã
size(chunk)
弿° chunk
ãåãã¡ã½ãããããã¯åãã£ã³ã¯ã«ä½¿ç¨ãããµã¤ãºããã¤ãåä½ã§ç¤ºãã¾ãã
readableStrategy
çç¥å¯
ãªãã·ã§ã³ã§ã¹ããªã¼ã ã®ãã¥ã¼ã¤ã³ã°æ¦ç¥ãå®ç¾©ãããªãã¸ã§ã¯ãã 2 ã¤ã®å¼æ°ãåãã¾ãã
highWaterMark
éè² ã®æ´æ°ãããã¯ãèå§ãé©ç¨ãããåã«å é¨ãã¥ã¼ã«æ ¼ç´ãããã¨ãã§ãããã£ã³ã¯ã®ç·æ°ãå®ç¾©ãã¾ãã
size(chunk)
弿° chunk
ãåãã¡ã½ãããããã¯åãã£ã³ã¯ã«ä½¿ç¨ãããµã¤ãºããã¤ãåä½ã§ç¤ºãã¾ãã
ã¡ã¢: èªåèªèº«ã§ç¬èªã® readableStrategy
ã writableStrategy
ãå®ç¾©ãããããªãã¸ã§ã¯ãå¤ã«å¯¾ã㦠ByteLengthQueuingStrategy
ã CountQueuingStrategy
ã®ã¤ã³ã¹ã¿ã³ã¹ã使ç¨ããããããã¨ãã§ãã¾ãã
次ã®ä¾ã¯ããã£ã³ã¯ãã¨ã«ããã¹ãã大æåã«å¤æãã¾ãããã®ä¾ã¯ StreamsâThe Definitive Guide ããå¼ç¨ãããã®ã§ãç°ãªã種é¡ã®ã¹ããªã¼ã ã®ä¾ãæ°å¤ãå«ã¾ãã¦ãã¾ãã
function upperCaseStream() {
return new TransformStream({
transform(chunk, controller) {
controller.enqueue(chunk.toUpperCase());
},
});
}
function appendToDOMStream(el) {
return new WritableStream({
write(chunk) {
el.append(chunk);
},
});
}
fetch("./lorem-ipsum.txt").then((response) =>
response.body
.pipeThrough(new TextDecoderStream())
.pipeThrough(upperCaseStream())
.pipeTo(appendToDOMStream(document.body)),
);
åä¸å¤æã¹ããªã¼ã ã®ä½æ
弿° transformer
ãä¸ããªãå ´åã¯ãæ¸ãè¾¼ã¿å¯è½ãªç«¯ç¹ã«æ¸ãè¾¼ã¾ãããã£ã³ã¯ã夿´ããã«èªã¿åãå¯è½ãªè¾ºã«ãã¹ã¦è»¢éããåä¸å¤æã¹ããªã¼ã ã«ãªãã¾ããæ¬¡ã®ä¾ã§ã¯ããã¤ãã«ãããã¡ã¼æ©è½ã追å ããããã«åä¸å¤æã¹ããªã¼ã ã使ç¨ãã¦ãã¾ãã
const writableStrategy = new ByteLengthQueuingStrategy({
highWaterMark: 1024 * 1024,
});
readableStream
.pipeThrough(new TransformStream(undefined, writableStrategy))
.pipeTo(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