gpt4 book ai didi

javascript - Node.js 中的 `stream.Transform.unshift()`

转载 作者:行者123 更新时间:2023-11-30 05:34:56 25 4
gpt4 key购买 nike

考虑一个简单的例子:

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>'

此转换流尝试将其第一个 block 推回读取队列,因此它将在下一个 _transform 调用中处理。

但出于某种原因,unshifting in Transform 导致数据立即进入输出而无需再次进入 _transform(因此不会大写).这是故意的还是我遗漏了什么?

最佳答案

unshift 是一个Readable 方法。这意味着当您在转换中调用它时,您会将内容推回输出端缓冲区,而不是输入端。

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

关于javascript - Node.js 中的 `stream.Transform.unshift()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com