Этот вопрос заключается в том, как на самом деле реализовать метод чтения читаемого потока.
У меня есть эта реализация читаемого потока:
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) в резюме_ (_stream_readable.js:825:12) в _combinedTickCallback (internal/process/next_tick.js:138:11) в process._tickCallback (внутренний/process/next_tick.js:180:9) в Function.Module.runMain (module.js:684:11) при запуске (bootstrap_node. js:191:16) в bootstrap_node.js:613:3
Причина возникновения ошибки очевидна, нам нужно сделать так:
this.readableStream = new Readable({
read(size) {
return true;
}
});
Я действительно не понимаю, как реализовать метод чтения.
Единственное, что работает, это просто позвонить
this.readableStream.push('some string or buffer');
если я попытаюсь сделать что-то вроде этого:
this.readableStream = new Readable({
read(size) {
this.push('foo'); // call push here!
return true;
}
});
дальше ничего не происходит - из читаемого ничего не выходит!
Кроме того, в этих статьях говорится, что вам не нужно реализовывать метод чтения:
https://github.com/substack/stream-handbook#creating-a-readable-stream
https://medium.freecodecamp.org/node-js-streams-everything-you-need-to-know-c9141306be93
Мой вопрос: почему вызов push внутри метода чтения ничего не делает? Единственное, что работает для меня, это просто вызов readable.push() в другом месте.