events(事件触发器)

const EventEmitter = require(‘events’);

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();
myEmitter.on(‘event’, () => {
console.log(‘触发事件’);
});
myEmitter.emit(‘event’);

将参数和 this 传给监听器

eventEmitter.emit() 方法可以传任意数量的参数到监听器函数。 当监听器函数被调用时,this 关键词会被指向监听器所绑定的 EventEmitter 实例。

const myEmitter = new MyEmitter();
myEmitter.on(‘event’, function(a, b) {
console.log(a, b, this, this === myEmitter);
// 打印:
// a b MyEmitter {
// domain: null,
// _events: { event: [Function] },
// _eventsCount: 1,
// _maxListeners: undefined } true
});
myEmitter.emit(‘event’, ‘a’, ‘b’);
也可以使用 ES6 的箭头函数作为监听器。但 this 关键词不会指向 EventEmitter 实例:

const myEmitter = new MyEmitter();
myEmitter.on(‘event’, (a, b) => {
console.log(a, b, this);
// 打印: a b {}
});
myEmitter.emit(‘event’, ‘a’, ‘b’);

猜你喜欢

转载自blog.csdn.net/mlonly/article/details/87856735