Nodejs EventEmitter 使用方法
Nodejs EventEmitter 使用方法
想在 event.emmit(‘eventName’) 执行完异步事件之后 触发一个 end 事件,怎么做?
暴露 event 给 listener 吗?
const event = new (require('events').EventEmitter)
event.on('name',(event)=>{
// dosomething
setTimeout(()=>{
...
event.emmit('nameEnd')
},100)
})
event.on(‘nameEnd’,()=>{
console.log(name)
})
event.emmit(‘name’,event)
2 回复
在Node.js中,EventEmitter
类是 events
模块的一部分,用于处理事件和监听器。以下是如何使用 EventEmitter
的基本方法:
- 引入
events
模块并创建EventEmitter
实例:
const EventEmitter = require('events');
const myEmitter = new EventEmitter();
- 监听事件:
使用 on
方法为特定事件添加一个监听器。
myEmitter.on('event', () => {
console.log('An event occurred!');
});
- 触发事件:
使用 emit
方法触发事件,并传递参数(如果有)。
myEmitter.emit('event');
- 一次性监听器:
使用 once
方法添加一个只会触发一次的监听器。
myEmitter.once('event', () => {
console.log('This will be logged only once.');
});
// 触发两次事件,但 'once' 监听器只会被调用一次
myEmitter.emit('event');
myEmitter.emit('event');
- 移除监听器:
使用 removeListener
方法移除特定的监听器,或者使用 removeAllListeners
移除所有监听器。
const callback = () => {
console.log('This will not be logged.');
};
myEmitter.on('event', callback);
myEmitter.removeListener('event', callback);
myEmitter.emit('event');
// 移除所有监听器
myEmitter.removeAllListeners('event');
通过以上方法,你可以轻松地在Node.js应用程序中使用 EventEmitter
进行事件驱动编程。