nodejs中的event.on()和event.once()之间的差异

我正在testingplus_one应用程序,并在运行时,我只是想澄清我的概念event.once()和event.on()

这是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偏移警告,但是当使用child.stdin.once()时,情况并非如此,为什么会发生这种情况呢?

是否因为child.stdin正在监听之前的input? 但是在这种情况下,maxlistener偏移量应该更频繁地设置,但是它只能在一分钟内发生一次或两次。

使用EventEmitter.on() ,你附加一个完整的监听器,而当你使用EventEmitter.once() ,它是一次性监听器,在一次触发之后将会分离。 只有一次触发的听众不会计入最大听众数量。