`stream.Transform.unshift()` in Node.js



考虑一个简单的例子:

stream = require 'stream'
util = require 'util'
class TestTransform extends stream.Transform
    _transform: (chunk, encoding, callback) ->
        if not @noMore
            @noMore = true
            @unshift chunk # I will handle you later
        else
            @push " <#{chunk.toString().toUpperCase()}>"
        callback()
mt = new TestTransform()
mt.write 'first'
mt.write 'second'
mt.on 'data', (chunk) -> console.log "data: #{util.inspect chunk.toString()}"
$ coffee test.coffee
data: 'first <SECOND>'

这个转换流试图将它的第一个块推回读队列,所以它将在下一个_transform调用中处理。

但由于某种原因,Transform中的unshift会导致数据立即进入输出,而不会再次进入_transform(因此不是大写)。这是故意的还是我漏掉了什么?

unshiftReadable方法。这意味着当你在转换中调用它时,你将东西推回输出端缓冲区,而不是输入端。

不要这样做。由于无法知道输出端缓冲区中有多少数据,因此这实际上是以不确定的顺序推送数据的。

相关内容

  • 没有找到相关文章

最新更新