Node.js записываемый поток - PullRequest
0 голосов
/ 14 января 2019

Я новичок в мире 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
...