假设我正在使用 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。