在stream.Readable中不实现_read的缺点



我有异步数据源,我想给stream.Readable接口。然而,这个数据源没有从它"读取"的概念-当有数据给我时,我只接收一个事件,不维护缓冲区。

那么,使用下面的实现有什么缺点吗?

stream = require 'stream'
class Wrapper extends stream.Readable
    constructor: (@resource) ->
        # call stream.Readable constructor
        super
        # when message from resource arrives
        @resource.on 'message', (message) =>
            # just push it into read queue
            @push message
        # when resource is closed
        @resource.on 'close', =>
            # indicate there will be nothing more to read
            @push null
    _read: (size) ->
        # no-op

。如果_read方法为空,并且数据最终在每个消息的基础上被推入读队列,我是否破坏了任何东西?

_read()方法是用来通知你流可以处理更多的数据(例如,内部缓冲区还没有达到highWaterMark)。当然,您可以忽略它。

然而,你至少应该适当地处理反压:如果push()返回false,你应该停止按压,直到_read()被调用或'drain'被释放。

相关内容

  • 没有找到相关文章

最新更新