readableStream.pipeThrough(transform[, options])
transform<Object>readable<ReadableStream>ReadableStream,transform.writable将会把从该ReadableStream接收到的可能被修改的数据推送到这里。writable<WritableStream> 将写入此ReadableStream数据的WritableStream。
options<Object>preventAbort<boolean> 当为true时,该ReadableStream中的错误不会导致transform.writable被中止。preventCancel<boolean> 当设置为true时,目标transform.writable中的错误不会导致此ReadableStream被取消。preventClose<boolean> 当为true时,关闭此ReadableStream不会导致transform.writable被关闭。signal<AbortSignal> 允许使用 <AbortController> 取消数据传输。
- 返回:从
transform.readable获取 <ReadableStream>。
将此 <ReadableStream> 连接到 transform 参数中提供的 <ReadableStream> 和 <WritableStream> 对,使得此 <ReadableStream> 的数据被写入 transform.writable,可能经过转换,然后推送到 transform.readable。一旦管道配置完成,将返回 transform.readable。
【Connects this <ReadableStream> to the pair of <ReadableStream> and
<WritableStream> provided in the transform argument such that the
data from this <ReadableStream> is written in to transform.writable,
possibly transformed, then pushed to transform.readable. Once the
pipeline is configured, transform.readable is returned.】
在管道操作进行时,会导致 readableStream.locked 为 true。
【Causes the readableStream.locked to be true while the pipe operation
is active.】
import {
ReadableStream,
TransformStream,
} from 'node:stream/web';
const stream = new ReadableStream({
start(controller) {
controller.enqueue('a');
},
});
const transform = new TransformStream({
transform(chunk, controller) {
controller.enqueue(chunk.toUpperCase());
},
});
const transformedStream = stream.pipeThrough(transform);
for await (const chunk of transformedStream)
console.log(chunk);
// Prints: Aconst {
ReadableStream,
TransformStream,
} = require('node:stream/web');
const stream = new ReadableStream({
start(controller) {
controller.enqueue('a');
},
});
const transform = new TransformStream({
transform(chunk, controller) {
controller.enqueue(chunk.toUpperCase());
},
});
const transformedStream = stream.pipeThrough(transform);
(async () => {
for await (const chunk of transformedStream)
console.log(chunk);
// Prints: A
})();