【发布时间】:2019-11-28 10:44:22
【问题描述】:
我正在开发一种数据接收器,最终将用于 nodejs 中的键值对象流。
我偶然发现了双工流并开始玩弄它们以弄湿我的脚,但我尝试的一切似乎都不起作用。
目前我有这个双工流:
class StorageStream extends stream.Duplex {
constructor() {
super({
objectMode: true
})
this.values = new Map();
this.entries = this.values.entries();
}
_write(data, encoding, next) {
const { key, value } = data;
this.values.set(key, value);
next();
}
_read() {
const next = this.entries.next();
if (next.value) {
this.push(next.value);
}
}
}
这是一个超级做作的例子,但本质上,当我写入这个流时,它应该将键和值存储在 Map 中,当我从这个流中读取时,它应该开始从映射中读取并将它们传递到流中.但是,这不起作用,基本上是在下面
const kvstream = createKVStreamSomeHow(); // a basic, readable stream with KV Pairs
const logger = createLoggerStreamSomeHow(); // writable stream, logs the data coming through
const storage = new StorageStream();
kvstream.pipe(storage).pipe(logger);
导致进程刚刚结束。所以我想我对我应该在 _read 方法中做什么感到有点困惑。
【问题讨论】:
标签: javascript node.js duplex node-streams