我正在从正在使用的库中获得一个可读流(require('stream').Readable
)*。
从一般意义上讲,一旦消耗完所有数据,我如何关闭这个(任何)可读流?我看到了end
事件,但从未接收到close
事件。
尝试:.close()
和destroy()
在require('stream').Readable
上似乎不再有效,而在require('fs') streams
上则有效。
我认为上述情况会导致负载下出现一些不稳定的行为。例如:文件描述符用完、内存泄漏等,因此非常感谢您的帮助。
谢谢。
*)x射线。在盖子下面,它使用enstore,它使用经过改装的require('stream').Readable
可读流通常不发射close
(它们发射end
)。例如,close
事件更多地用于可写流,以指示底层文件描述符已关闭。
一旦消耗完所有数据,就不需要手动关闭Readable流,它会自动结束(这是在流实现调用push(null)
时完成的)。
当然,如果流实现没有清理它在幕后使用的任何资源,那么这就是一个错误,应该在相应项目的问题跟踪器上存档。