在 Stream API 中,转换流用于实现管道链概念。管道链是多个流相互连接的过程。原始源称为管道链的起点,而最终凹陷称为管道链的终点。
TransformStream 接口
Stream API 支持两种类型的转换流接口 -
- TransformStream 接口
- TransformStreamDefaultController
TransformStream 接口
TransformStream 接口用于实现管道链变换流方法。
构造 函数
要创建转换流对象,TransformStream 接口提供了一个 TransformStream() 构造函数。此对象表示一对流,它们是可写端的 WritableStream 和可读端的 ReadableStream。
语法
以下是 TransformStream() 构造函数的可选参数 -
- mtransform − 此对象表示变压器。start(controller)、transform(chunk, controller) 和 flush(controller) 是 transformer 对象包含的方法。其中 controller 是 TransformStreamDefaultController 的实例。
- writableStrategy − 此对象用于定义写入流的排队策略。它需要两个参数:highWaterMark 和 size(chunk)。
- readableStrategy – 此对象用于定义读取流的排队策略。它需要两个参数:highWaterMark 和 size(chunk)。
实例属性
TransformStream 接口提供的属性是只读属性。所以 TransformStream 提供的属性是 -
属性 | 描述 |
---|---|
TransformStream.readable |
此属性返回 TransformStream 的可读端。 |
TransformStream.writable |
此属性返回 TransformStream 的可写端。 |
TransformStreamDefaultController 接口
TransformStreamDefaultController 接口提供了多种方法来操作 ReadableStream 和 WritableStream。当我们创建一个 TransformStream 时,会自动创建 TransformStreamDefaultController。因此,它不需要任何单独的构造函数。
实例属性
TransformStreamDefaultController 接口提供的属性是只读属性。因此,TransformStreamDefaultController 提供的属性为 −
属性 | 描述 |
---|---|
TransformStreamDefaultController.desiredSize |
此属性返回一个大小,该大小将填充流内部队列的可读端。 |
方法
以下是 TransformStreamDefaultController 接口的常用方法 -
方法 | 描述 |
---|---|
TransformStreamDefaultController.enqueue() |
此方法用于将一段数据排入给定流的可读端。 |
TransformStreamDefaultController.error() |
此方法用于查找流的可读端和可写端的错误。 |
TransformStreamDefaultController.terminate() |
该方法用于关闭转换流的可读端和可写端的错误。 |
示例 - 创建转换流
在下面的程序中,我们创建了一个自定义转换流。因此,要创建转换流,我们将 TransformStream() 构造函数与 transform()、flush()、start() 和 cancel() 函数一起使用。transform() 函数实现接收到的块,然后以大写形式转换它们,然后使用 enqueue() 方法将数据排入队列。flush() 方法用于处理流终结,start() 方法用于处理初始化,cancel() 方法用于处理取消。现在,我们使用 getWriter() 方法从转换流中获取写入器,以读取流的数据。然后我们使用 getReader() 函数获取转换流的读取器。它在 myread() 函数的帮助下从流中读取和处理转换后的数据。
结论
这就是转换流的工作原理。它通常用于我们将多个流连接在一起。现在,在下一篇文章中,我们将学习 Stream API 中的对象模式。