transform stream 由一对流组成:可写流(称为其 writable side)和可读流(称为其 readable side)。写入 writable side 的数据会作为新数据供 readable side 读取。
Workers 目前仅实现 identity transform stream,这是一种 transform stream,会将写入其 writable side 的所有 chunk 原样转发到其 readable side,不做任何更改。
let { readable, writable } = new TransformStream();-
TransformStream()TransformStream- 返回新的 identity transform stream。
readableReadableStreamReadableStream实例。
writableWritableStreamWritableStream实例。
Workers 平台上 TransformStream 的当前实现尚未完全符合 Streams Standard ↗,我们很快将对实现进行更改以使其符合规范。为此,我们引入了 IdentityTransformStream 类,其行为与当前 TransformStream 类相同。此类 stream 会将写入其 writable side 的所有字节数据 chunk(以 TypedArray 形式)原样转发到其 readable side,不做任何更改。
IdentityTransformStream 的 readable side 支持 bring your own buffer (BYOB) reads ↗。
let { readable, writable } = new IdentityTransformStream();-
IdentityTransformStream()IdentityTransformStream- 返回新的 identity transform stream。
readableReadableStreamReadableStream实例。
writableWritableStreamWritableStream实例。
FixedLengthStream 是 IdentityTransformStream 的特化版本,限制 stream 可 passthrough 的总字节数。它主要很有用,因为使用 FixedLengthStream 生成 Response 或 Request 时,stream 的固定长度会用作 Content-Length 标头值,而不是像使用其他类型的 stream 那样使用 chunked encoding。如果写入 stream 的字节数过多或过少,将发生错误。
let { readable, writable } = new FixedLengthStream(1000);-
FixedLengthStream(length)FixedLengthStream- 返回新的 identity transform stream。
length可以是number或bigint,最大值为2^53 - 1。
readableReadableStreamReadableStream实例。
writableWritableStreamWritableStream实例。