假设我正在使用 Node 的PassThrough stream来测试我的流实用程序,并且希望一些数据从我的流中输出。

var s = new require('stream').PassThrough();

s.push(x);  // <==== Are these identical?
s.write(x);

有什么理由比另一个更喜欢?

最佳答案

,它们不相同。

push用于实现可读流。它将数据插入读取队列,然后可以通过调用read()进行读取。如果使用null调用它,则将用信号通知数据结束(EOF)。请参阅给出的注释:



要实现流,开发人员必须给定here编写某些方法。

Use-case                                       Class       Method(s) to implement
Reading only                                   Readable    _read
Writing only                                   Writable    _write
Reading and writing                            Duplex      _read, _write
Operate on written data, then read the result  Transform   _transform, _flush

push只能用于能够读取()的流,即可读双工转换流。它只能在这些函数_read,_transform或_flush中使用。 PassThrough是Transform的实现。

write应该由可写流的用户使用。



如果您打算使用可写流(将其写入),请使用写操作。推送不是写的替代方法。对PassThrough使用write。

09-26 19:53