Xin*_*Xin 17 javascript browser
在node.js中使用eventEmitter非常容易:
var e = new EventEmitter();
e.on('happy', function(){console.log('good')});
e.emit('happy');
Run Code Online (Sandbox Code Playgroud)
浏览器原生的任何客户端EventEmitter?
Bra*_*rad 25
在现代浏览器中,存在EventTarget。
class MyClass extends EventTarget {
doSomething() {
this.dispatchEvent(new Event('something'));
}
}
const instance = new MyClass();
instance.addEventListener('something', (e) => {
console.log('Instance fired "something".', e);
});
instance.doSomething();
Run Code Online (Sandbox Code Playgroud)
其他资源:
Maga Zandaqo在这里有一个很好的详细指南:https ://medium.com/@zandaqo/eventtarget-the-future-of-javascript-event-systems-205ae32f5e6b
MDN有一些文档:https : //developer.mozilla.org/en-US/docs/Web/API/EventTarget
在客户端创建自定义事件,并附加到 dom 元素:
var event = new Event('build');
// Listen for the event.
elem.addEventListener('build', function (e) { /* ... */ }, false);
// Dispatch the event.
elem.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
这是参考自:https : //developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events 谢谢 Naeem Shaikh
有一个名为“events”的 NPM 包,它使您能够在浏览器环境中制作事件发射器。
var EventEmitter = require('events')
var e = new EventEmitter()
e.on('message', function (text) {
console.log(text)
})
e.emit('message', 'hello world')
Run Code Online (Sandbox Code Playgroud)
在你的情况下,它是
var EventEmitter = require('events')
var e = new EventEmitter();
e.on('happy', function(){console.log('good')});
e.emit('happy');
Run Code Online (Sandbox Code Playgroud)
这对于给定的情况就足够了。
class EventEmitter{
constructor(){
this.callbacks = {}
}
on(event, cb){
if(!this.callbacks[event]) this.callbacks[event] = [];
this.callbacks[event].push(cb)
}
emit(event, data){
let cbs = this.callbacks[event]
if(cbs){
cbs.forEach(cb => cb(data))
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新:我刚刚发布了它的更进化版本。这很简单,但可能已经足够了:https : //www.npmjs.com/package/alpeventemitter
Jia*_*ong -3
你需要一个 JavaScript 库,比如https://github.com/Olical/EventEmitter \xef\xbc\x9f
\n 归档时间: |
|
查看次数: |
7689 次 |
最近记录: |