所以,我有一个代码来模拟这个问题:
const H = require('highland');
const Promise = require('bluebird');
let i = 0
const stream = H(function(push, next) {
console.log('read', i)
push(null, i)
i++;
Promise.delay(100).then(() => next())
})
stream
.flatMap(function(x) {
console.log('start writing', x)
return H(Promise.delay(2000, 'y').tap(() => console.log('finish writing', x)))
})
.done()
产生这样的输出:
read 0
start writing 0
finish writing 0
read 1
start writing 1
问题:我想要一个一定大小的缓冲区,我将在其中堆叠来自生产者的数据。因此,使用大小为 1 的缓冲区,输出应如下所示:
read 0
start writing 0
read 1
finish writing 0
start writing 1
read 2
所以,如果“生产者”“忙”,我想缓冲生产者的价值。高地可以做这样的事情吗?