试图理解node.js中的可读流
在我的试图理解node.js中的可读流,node.js,Node.js,在我的module.js中我有 var Stream = require('stream'); module.exports = function () { var stream = new Stream(); stream.readable = true; stream.emit('data', 'some stuff') stream.emit('end') return stream; } 在我的index.js var module = require('.
module.js中
我有
var Stream = require('stream');
module.exports = function () {
var stream = new Stream();
stream.readable = true;
stream.emit('data', 'some stuff')
stream.emit('end')
return stream;
}
在我的index.js
var module = require('./module')
module().pipe(process.stdout)
来自的substack示例运行良好。为什么我的代码没有在命令行中显示任何内容?因为您在调用
管道之前发送数据,并且在触发第一个“data”事件之后附加了“data”侦听器
EventEmitter的调用是同步的(与node.js中几乎所有其他非IO调用一样)
有点简化的版本
stream.emit('data', 'some stuff')
stream.pipe(process.stdout)
如果没有EventEmitter,则可以将其重写为
stream.listeners = [];
// 'emit' call
var ondata = stream.listeners.data;
if (ondata) {
// only one listener case in the example
ondata('some stuff');
}
// 'pipe' call
stream.listeners.data = function(buff) {
process.write(buff);
}