Почему для readableStream нужен метод _read (), но он ничего не должен делать? - PullRequest
0 голосов
/ 26 апреля 2019

Я просто играю с node.js, пока работаю над проектом, и я использовал fs.createWriteStream для записи в файл и решил, что хочу попробовать реализовать readableStream, чтобы я мог сделать readableStream.pipe(writeStream) - - это моя конечная цель - иметь возможность создать объект, который можно просто передать в writeStream

Так вот что я получил:

const wstream = fse.createWriteStream('./files/costPrices.csv');
wstream.write('handle,cost price\r\n');

const Stream = require('stream');
const readableStream = new Stream.Readable();


readableStream.pipe(wstream);

const promises = [];
items.forEach(item => {
    const promise = (async () => {
        const cp = await getCostPrice(item);
        readableStream.push(`${item.Handle},${cp}\r\n`);
    })();

    promises.push(promise);
});

await Promise.all(promises);
console.log('done');

wstream.close();

И когда я это сделал, в консоли я получил сообщение о том, что _read не реализовано, поэтому под new Stream.Readable() я написал readableStream._read = () => {};, и оно заработало.

Я довольно ошеломлен этим, я не могу сказать, что понимаю, что происходит, или почему нужен ._read метод, но он не должен делать ничего полезного.

...