File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -51,6 +51,36 @@ highWaterMark 选项是阈值,而不是限制:它规定了流在停止请求
5151
5252由于 Duplex 和 Transform 流都是 Readable 和 Writable,因此每个流都维护两个独立的内部缓冲区,用于读取和写入,允许每一端独立操作,同时保持适当且高效的数据流。 例如,net.Socket 实例是 Duplex 流,其 Readable 端允许消费从套接字接收的数据,其 Writable 端允许将数据写入套接字。 因为数据可能以比接收数据更快或更慢的速度写入套接字,所以每一端都应该独立于另一端进行操作(和缓冲)。
5353
54+ ## Readable
55+
56+ 可读流是对被消费的数据的来源的抽象。
57+
58+ Readable 流的示例包括:
59+
60+ 客户端上的 HTTP 响应
61+ 服务器上的 HTTP 请求
62+ 文件系统读取流
63+ 压缩流
64+ 加密流
65+ TCP 套接字
66+ 子进程的标准输出和标准错误
67+ process.stdin
68+
69+ 所有的 Readable 流都实现了 stream.Readable 类定义的接口。
70+
71+ Readable 流以两种模式之一有效地运行:流动和暂停。在流动模式下,数据会自动从底层系统读取,并通过 EventEmitter 接口使用事件尽快提供给应用程序。在暂停模式下,必须显式调用 stream.read() 方法以从流中读取数据块。
72+
73+ 所有的 Readable 流都以暂停模式开始,但可以通过以下方式之一切换到流动模式:
74+
75+ 添加 data 事件句柄。
76+ 调用 stream.resume() 方法。
77+ 调用 stream.pipe() 方法将数据发送到 Writable。
78+ Readable 可以使用以下方法之一切换回暂停模式:
79+
80+ 如果没有管道目标,则通过调用 stream.pause() 方法。
81+ 如果有管道目标,则删除所有管道目标。 可以通过调用 stream.unpipe() 方法删除多个管道目标。
82+
83+
5484## 流的类型
5585
56864种基本的流类型
@@ -565,3 +595,13 @@ write('hello', () => {
565595 console .log (' 完成写入' )
566596});
567597```
598+
599+
600+ ## 双工流与转换流
601+
602+ 双工流(Duplex) 是同时实现了 Readable 和 Writable 接口的流。 双工流的例子包括 TCP socket、 zlib 流, crypto 流。
603+
604+ 转换流(Transform) 是一种双工流,但它的输出与输入是 相关联的。与双工流一样,转换流也同时实现了 Readable 和 Writable 接口。转换流的例子包括 zlib流和crypto流。
605+
606+ ## 实现双工流
607+
You can’t perform that action at this time.
0 commit comments