Я просто играю с 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
метод, но он не должен делать ничего полезного.