给监听器传参

eventEmitter.emit() 方法允许将任意参数传递给监听器函数。需要牢记的是,一个普通的监听器函数被 EventEmitter 调用时,标准的 this 关键词会被刻意得设置成指向附加到监听器上的这个 EventEmitter 实例的引用。

const myEmitter = new MyEmitter();
myEmitter.on('event', function (a, b) {
    console.log(a, b, this);
    // 打印:
    //   a b MyEmitter {
    //     domain: null,
    //     _events: { event: [Function] },
    //     _eventsCount: 1,
    //     _maxListeners: undefined }
});
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');

results matching ""

    No results matching ""