eventName
{string|symbol} 事件的名称。listener
{Function} 事件的句柄函数。
EventEmitter
实例在新的监听器被添加到其内部监听器数组之前,会触发自身的 'newListener'
事件。
为 'newListener'
事件注册的监听器将传递事件名称和对要添加的监听器的引用。
在添加监听器之前触发事件的事实具有微妙但重要的副作用:在 'newListener'
回调中注册到相同 name
的任何其他监听器将插入到正在添加的监听器之前。
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
// 只处理一次,避免无限循环。
myEmitter.once('newListener', (event, listener) => {
if (event === 'event') {
// 在前面插入一个新的监听器。
myEmitter.on('event', () => {
console.log('B');
});
}
});
myEmitter.on('event', () => {
console.log('A');
});
myEmitter.emit('event');
// 打印:
// B
// A