如何处理 Node.js 可写流中的结束信号?

Ali*_*cia 5 stream node.js

使用stream.Writablenode.js 0.10的基类,我如何处理消费者调用的情况.end(),从而表明没有更多数据可用?

文档中,唯一告诉要在Writable子类中实现的方法是_write,但我找不到任何干净的方法来注意到输入何时耗尽。

Ali*_*cia 0

尴尬的是,从 0.10 开始,节点stream.Writable不以标准、干净的方式支持这一点。这个问题已经在这里讨论:https ://github.com/joyent/node/issues/7348

该页面提出了几种解决方法。TomFrost的flushwritable模块目前看来是一个可以接受的解决方案。

该模块提供了一个FlushWritable类,该类的使用方式与该类完全相同,但支持在消费者调用之后但在事件发出之前调用的stream.Writable新方法。_flush.end()finish