节点stream:如果一个可读的stream如果已经被排空(如果已经被排出),怎么会发出另一个可读的事件?

节点文档说明(对于可读stream的readable事件):

一旦内部缓冲区被耗尽,当有更多数据可用时,可读的事件将再次触发。

不过,它也说:

事件:'结束'

当没有更多数据要读取时,此事件触发。

请注意,除非数据完全消耗,否则结束事件不会触发。 这可以通过切换到stream动模式,或通过重复调用read()直到完成。

所以我的问题是,如果一个缓冲区被耗尽,它不会发出end事件,这将防止再次发射readable事件?

不,当缓冲区被排空时不会发生end 。 只有当底层资源声明不会推送更多数据时才会发生。