readableStream.pipeThrough(transform[, options])


  • transform <Object>

    • readable <ReadableStream> transform.writable 将从 ReadableStream 接收到的可能修改的数据推送到 ReadableStream

      ¥readable <ReadableStream> The ReadableStream to which transform.writable will push the potentially modified data it receives from this ReadableStream.

    • writable <WritableStream> ReadableStream 的数据将写入的 WritableStream

      ¥writable <WritableStream> The WritableStream to which this ReadableStream's data will be written.

  • options <Object>

    • preventAbort <boolean>true 时,此 ReadableStream 中的错误不会导致 transform.writable 中止。

      ¥preventAbort <boolean> When true, errors in this ReadableStream will not cause transform.writable to be aborted.

    • preventCancel <boolean>true 时,目标 transform.writable 中的错误不会导致此 ReadableStream 被取消。

      ¥preventCancel <boolean> When true, errors in the destination transform.writable do not cause this ReadableStream to be canceled.

    • preventClose <boolean> true 时,关闭这个 ReadableStream 不会导致 transform.writable 关闭。

      ¥preventClose <boolean> When true, closing this ReadableStream does not cause transform.writable to be closed.

    • signal <AbortSignal> 允许使用 <AbortController> 取消数据传输。

      ¥signal <AbortSignal> Allows the transfer of data to be canceled using an <AbortController>.

  • 返回:<ReadableStream> 来自 transform.readable

    ¥Returns: <ReadableStream> From transform.readable.

将此 <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
})();