我正在尝试启动一个长期运行的程序,它为sdtout提供了大量输出。我试图使用下面的方法来读取间隔数据。
s = spawn('blah_long_running_expect.pl --device server');
setInterval( function (){
s.stdout.on('data', function (data) {
console.log("herehere");})
},1000);
}
这是http服务器实例的一部分......在此之前的某处有一个createserver。我最终的想法是使用response.write输出到屏幕
我现在收到以下错误。我想知道这种读取线的设置方式是否完全错误?
(node) warning: possible EventEmitter memory leak detected. 11 listeners added.
Use emitter.setMaxListeners() to increase limit.
Trace:
at Socket.<anonymous> (events.js:126:17)
at Timer.callback (/tmp/requestHandlers.js:12:17)
答案 0 :(得分:2)
s.stdout.on('data',function(data){ 的console.log( “herehere”);}) },1000);
.on
调用会添加一个事件侦听器。你想要做的就是这样。
s = spawn('blah_long_running_expect.pl --device server');
var dd = "";
s.stdout.on('data', function(d) {
console.log('some data : ' + d);
dd += d;
});
s.stdout.on('end', function() {
console.log('end');
});
setInterval( function (){
console.log(dd);
dd = "";
},1000);
答案 1 :(得分:0)
使用您的代码,它每秒都会添加一个新的事件侦听器。您无需担心将输出拆分为块; Node.js会处理这个问题,而这正是“数据”事件的用途。