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 回复

const EventEmitter = require(‘events’);

const event = new EventEmitter();

event.on(‘eventEnd’, () => {
console.log(‘異步事件執行後觸發 eventEnd 事件’);
});

event.on(‘eventAsync’, function () {
setImmediate(() => {
console.log(‘異步事件觸發’);
// to do…
this.emit(‘eventEnd’);
});
});

event.emit(‘eventAsync’);


在Node.js中,EventEmitter 类是 events 模块的一部分,用于处理事件和监听器。以下是如何使用 EventEmitter 的基本方法:

  1. 引入 events 模块并创建 EventEmitter 实例
const EventEmitter = require('events');
const myEmitter = new EventEmitter();
  1. 监听事件

使用 on 方法为特定事件添加一个监听器。

myEmitter.on('event', () => {
  console.log('An event occurred!');
});
  1. 触发事件

使用 emit 方法触发事件,并传递参数(如果有)。

myEmitter.emit('event');
  1. 一次性监听器

使用 once 方法添加一个只会触发一次的监听器。

myEmitter.once('event', () => {
  console.log('This will be logged only once.');
});

// 触发两次事件,但 'once' 监听器只会被调用一次
myEmitter.emit('event');
myEmitter.emit('event');
  1. 移除监听器

使用 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 进行事件驱动编程。

回到顶部