NodeJS:Duplex流和Transform流之间有什么区别?

bra*_*kim 27 stream node.js

所述流文档状态双工流 "是同时实现可读写接口流"和变换流 "是双相流其中输出以某种方式从输入计算".遗憾的是,文档没有描述Transform流在Duplex流之上和之外提供的内容.

这两者有什么不同吗?你什么时候用一个而不是另一个?

use*_*109 68

可以将双工流视为具有可写流的可读流.两者都是独立的,每个都有独立的内部缓冲.读写事件独立发生.

                             Duplex Stream
                          ------------------|
                    Read  <-----               External Source
            You           ------------------|   
                    Write ----->               External Sink
                          ------------------|
            You don't get what you write. It is sent to another source.
Run Code Online (Sandbox Code Playgroud)

变换流是双工,其中读取和写入以因果方式发生.双工流的端点通过一些变换链接.读取需要写入已发生.

                                 Transform Stream
                           --------------|--------------
            You     Write  ---->                   ---->  Read  You
                           --------------|--------------
            You write something, it is transformed, then you read something.
Run Code Online (Sandbox Code Playgroud)

  • 对于ascii图表,它们应该在node.js文档中使用,这将有助于更好地传达概念 (4认同)

dan*_*cic 6

区别只是语法糖。变换流是全双工流,但不是执行_write_read方法,你被要求实现公正的_transform方法。您可以在出色的子堆栈的流指南Isaacs的可读流repo中阅读有关流的更多信息。