[英]Order of execution of statements in Nodejs event emitter program
我嘗試了以下 NodeJs 示例:
const EventEmitter = require('events');
var eventEmitter = new EventEmitter();
var fun1 = (msg) => {
console.log("Message from fun1: " + msg);
};
var fun2 = (msg) => {
console.log("Message from fun2: " + msg);
};
eventEmitter.on('myEvent', fun1);
eventEmitter.on('myEvent', fun1);
eventEmitter.on('myEvent', fun2);
eventEmitter.removeListener('myEvent', fun1);
eventEmitter.emit('myEvent', "Event occurred");
console.log(eventEmitter.listenerCount('myEvent'));
eventEmitter.removeAllListeners('myEvent');
console.log(eventEmitter.listenerCount('myEvent'));
eventEmitter.emit('myEvent', "Event occurred");
Output 是:
來自 fun1 的消息:事件發生
來自 fun2 的消息:事件發生
2
0
請幫助我理解 output,因為根據我的預期,不應該打印“來自 fun2 的消息:事件發生”行,因為我在它之前調用了 removeAllListeners。 並且,事件發射器函數被同步調用。 另外,如果事件發射器功能真的以同步方式執行,為什么所有控制台日志都在最后打印?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.