我正在测试 plus_one 应用,运行它时,我想澄清一下关于 event.once() 和 event.on() 的概念。
这是 plus_one.js。
这是 plus_one.js。
> process.stdin.resume();
process.stdin.on('data',function(data){
var number;
try{
number=parseInt(data.toString(),10);
number+=1;
process.stdout.write(number+"\n");
}
catch(err){
process.stderr.write(err.message+"\n");
}
});
这是test_plus_one.js文件
var spawn=require('child_process').spawn;
var child=spawn('node',['plus_one.js']);
setInterval(function(){
var number=Math.floor(Math.random()*10000);
child.stdin.write(number+"\n");
child.stdout.on('data',function(data){
console.log('child replied to '+number+' with '+data);
});
},1000);
当我使用child.stdin.on()时,我会收到一些maxlistener offset警告,但是当我使用child.stdin.once()时,这种情况并不会发生,这是为什么?
这是因为child.stdin正在侦听以前的输入吗?但在这种情况下,maxlistener偏移量应更频繁地设置,但它每分钟只发生一两次。