这个问题是如何真正实现可读流的读取方法。
我有一个可读流的实现:
import {Readable} from "stream";
this.readableStream = new Readable();
我收到此错误
events.js:136 抛出错误;// 未处理的“错误”事件 ^
错误 [ERR_STREAM_READ_NOT_IMPLEMENTED]:_read() 未在 Readable._read (_stream_readable.js:554:22) 处 Readable.read (_stream_readable.js:445:10) 在 resume_ (_stream_readable.js:825:12) 在 _combinedTickCallback (internal/process/next_tick.js:138:11) at process._tickCallback (internal/process/next_tick.js:180:9) at Function.Module.runMain (module.js:684:11) at startup (bootstrap_node. js:191:16) 在 bootstrap_node.js:613:3
错误发生的原因很明显,我们需要这样做:
this.readableStream = new Readable({
read(size) {
return true;
}
});
我真的不明白如何实现 read 方法。
唯一有效的就是打电话
this.readableStream.push('some string or buffer');
如果我尝试做这样的事情:
this.readableStream = new Readable({
read(size) {
this.push('foo'); // call push here!
return true;
}
});
然后什么也没有发生 - 没有任何东西来自可读!
此外,这些文章说您不需要实现 read 方法:
https://github.com/substack/stream-handbook#creating-a-readable-stream
https://medium.freecodecamp.org/node-js-streams-everything-you-need-to-know-c9141306be93
我的问题是- 为什么在 read 方法中调用 push 什么都不做?唯一对我有用的就是在别处调用 readable.push() 。