是否存在一种方法,可以在高地流中添加一条完整的信息,以完整地描述我们的需求?
少假设我们有以下情况:
const stream = high([1,4,6,7])
然后,使用此流,我要计算正在处理的每个值,然后说
sink.drain(stream.pipe(4))
为4的数组元素数。考虑到这可能是流中对象的数量之多,为了能够计数,我需要从流中进行消耗。
我不能说array.length,因为它是可能包含任何信息的源,并且该信息正在与流一起处理...我如何在流中添加消息末尾以及所消耗内容的描述?
最佳答案
听起来您想在值周围建立一些状态,但又不妨碍值的使用。我建议查看一些涉及h.through
的解决方案。
您可以使用fork
或observe
分割流,并从值中减少一些状态:
h([1, 2, 3, 4])
.through(stream => {
const length = stream.observe()
.reduce(0, m => m + 1)
.map(length => ({ length }))
return h([stream, length])
.sequence()
})
.errors(err => console.error(err))
.each(x => console.log(x))
您可以创建一些状态并根据源流的事件返回一个新的流:
const h = require('highland')
h([1, 2, 3, 4])
.through(stream => {
let length = 0
return h(push => stream
.tap(() => ++length)
.errors(err => push(err))
.each(x => push(null, x))
.done(() => {
push(null, `length: ${length}`)
push(null, h.nil)
}))
})
.errors(err => console.error(err))
.each(x => console.log(x))
关于javascript - 高地在被完全消耗之前会增加流量吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51503313/