我正在尝试从一个开源项目中了解一些代码片段,我不明白用星号EventEmitter.emit
作为事件名称调用'*'
的方法。
在某些库(如JQuery)中,'*'
作为事件名称意味着“所有事件”。
在EventEmitter的上下文中它意味着什么?
我试图在这个项目中找到'*'
事件的监听器,但没有运气。
class BlaBla extends EventEmitter {
methodCall(event){
this.emit("*", {event}); // <- what does this mean ???
}
}
答案 0 :(得分:0)
this.emit("*", {event});
表示调用emit()方法将执行使用on方法注册的所有函数。
答案 1 :(得分:0)
使用CREATE TABLE tables (name_tables VARCHAR2(60)
,tuple VARCHAR2(50),
taille_tuple VARCHAR2(50))
作为事件名称没有特殊效果,它表现为普通事件。
您可以查看event emitter code,看看唯一的特殊事件名称是:
示例(repl.it code)
'*'
输出
const {
EventEmitter
} = require('events');
class BlaBla extends EventEmitter {
methodCall(stuff) {
this.emit("*", {
stuff // <-- this gets passed as an argument to the handler for the '*' event
});
}
}
const b = new BlaBla();
b.on('a', (...args) => console.log('nope', ...args)); // <-- this doesn't run
b.on('b', (...args) => console.log('nope', ...args)); // <-- this doesn't run
b.on('*', (...args) => console.log('this gets called', ...args)); // <-- This runs
b.methodCall('this gets passed down');
如果在此特定项目中调用this gets called { stuff: 'this gets passed down' }
时调用所有事件处理程序,则他们可能会手动执行此操作。
这是一个如何完成的简化示例:
this.emit('*')