Я новичок в мире Node.js, но хорошо догоняю. В основном я читаю официальные документы, потому что думаю, что они являются наиболее полными для чтения.
Недавно я читал о Streams в Node.js и написал очень крошечную реализацию Writable просто для проверки воды и концепций.
Расширение Доступно для записи и вызов write () на моем настраиваемое значение Writable работало нормально. Но когда я попытался использовать упрощенный подход простого создания объекта Writable , проходящего ту же самую крошечную реализацию, тогда он работал для первой write () , но не для последующих. Это удивило меня.
Это работает
class MyWritable extends Writable {
constructor(options) {
super(options)
}
write(chunk, encoding, cb) {
console.log(`MySimpleStream wrote: ${chunk}`)
}
}
const mw = new MyWritable({decodeStrings: false})
mw.write('1')
mw.write('2')
Это не работает для второго вызова write () (см. Вывод консоли)
const myWritableSimpleObj = new Writable({
write(chunk, encoding, cb) {
console.log(`MySimpleStream wrote: ${chunk}`)
},
decodeStrings: false
})
myWritableSimpleObj.write('My simple writable stream...')
myWritableSimpleObj.write('Some more data.')
Вывод на консоль:
nodemon] restarting due to changes...
[nodemon] starting `node src/implementWritable.js`
MySimpleStream wrote: 1
MySimpleStream wrote: 2
MySimpleStream wrote: My simple writable stream...
[nodemon] clean exit - waiting for changes before restart