【发布时间】:2019-03-30 15:36:29
【问题描述】:
const stream = require('stream')
const readable = new stream.Readable({
encoding: 'utf8',
highWaterMark: 16000,
objectMode: false
})
const news = [
'News #1',
'News #2',
'News #3'
]
readable._read = () => {
if(news.length) {
return readable.push(news.shift() + '\n')
}
return readable.push(null)
}
readable.on('readable', () => {
let data = readable.read()
if(data) {
process.stdout.write(data)
}
})
readable.on('end', () => {
console.log('No more feed')
})
为什么这段代码有效?当缓冲区中有一些数据时会触发“可读”。如果我没有在流中推送任何数据,为什么这会起作用?我只在调用“_read”时阅读。我没有调用它,为什么它会触发可读事件?我是 node.js 的菜鸟,刚刚开始学习。
【问题讨论】:
标签: javascript node.js stream buffer