一直在寻找一种通用的方法来处理类中的事件。准确地说,我在做一个节点。js模块,我希望能够为某些事件添加多个回调。比如说,我的源代码看起来像这样:
class Example {
constructor(...args) {
// ...
}
doSomething(earg) {
setTimeout(() => {
// I want an event call here.
// this.callEvent(eargs) or something like that, to pass
// down arguments to callbacks.
}, 3000);
}
on(event, callback, watch) {
// ...
}
once(event, callback, watch) {
// ...
}
}
const example = new Example();
example.on('doSomethingEnd', (earg) => console.log(':P', earg));
在ES6及以上环境中实现.on
和.once
的最紧凑和最现代的方法是什么?如何实现“代码编辑器自动填充”?(对于像Atom或VSCode这样的编辑器,或任何其他具有语法提示的编辑器)。
1条答案
按热度按时间rekjcdws1#
要以现代紧凑的方式处理类中的事件,可以使用Node中events模块中的EventEmitter类。js。下面是一个如何修改Example类以使用EventEmitter的示例:
在本例中,Example类扩展了EventEmitter类,后者提供了处理事件的on()和once()方法。doSomething()方法使用emit()方法发出带有earg参数的“doSomethingEnd”事件。
要在带有语法提示的编辑器中使用此代码,可以使用npm安装@types/node包。此包为Node提供TypeScript定义。js模块,包括events模块。一旦您安装了包,您的编辑器应该能够为EventEmitter类及其方法提供语法提示。