NodeJS:双工stream和变换stream有什么区别?

Stream文档声明Duplex Streams是实现Readable和Writable接口的stream,而Transform Streams是Duplexstream,输出是以某种方式从input中计算出来的。 不幸的是,文档没有描述什么变换stream提供超出双工stream。

两者有什么区别? 你什么时候使用一个?

双工stream可以被认为是具有可写stream的可读stream。 两者都是独立的,每个都有独立的内部缓冲区 读取和写入事件独立发生。

Duplex Stream ------------------| Read <----- External Source You ------------------| Write -----> External Sink ------------------| You don't get what you write. It is sent to another source. 

一个转换stream是一个双工,其中读写以因果方式进行。 双工stream的端点通过一些变换链接。 读取需要写入发生。

  Transform Stream --------------|-------------- You Write ----> ----> Read You --------------|-------------- You write something, it is transformed, then you read something. 

如果您阅读了文档的stream实现者的API部分,他们指出,一些可能的用于双工和变换stream的用例分别是“读写”和“在写入数据上操作,然后读取结果”。

简单地说,转换stream可以让你实现_transform方法,该方法在数据完成一些操作之后接受一些input并返回输出,并且可以用于诸如压缩或散列之类的事情,而双工stream可以用于诸如一个TCP套接字连接,您只需发送和接收数据。

差别只是语法糖。 转换stream是全双工stream,但不是实现_write_read方法,只需要实现_transform方法。 您可以阅读有关优秀的substackstream指南或Isaacs可读stream回购的更多stream 。