как сделать в в своей new Function event .on
Здравствуйте.
есть свой объект var MainProcess = new Gtdocument(); как сделать так, что можно было потом принимать сообщения типа MainProcess.on('SELECT', function().... |
Signal, нужно добавить классу "Gtdocument" новый метод.
Gtdocument.prototype.on=function(){};
|
|
Цитата:
можно краткий код реализации? |
Signal,
Всё проще некуда. Ставишь тот емиттер по ссылке. Потом в коде:
var ee = require('event-emitter');
ee(Gtdocument.prototype);
Теперь на экземпляры Gtdocument можно подписываться. А они, в свою очередь, могут вызывать в своих методах this.emit(...) |
забыл отписаться в этой теме, ну вопрос-то был в теме javascripts а не в node.js ветке, нашел такое вот решение для сайтового javascript или я может что не понял про requrie нодовские
сам класс:
class EventEmitter {
constructor() {
this.events = {};
}
emit(eventName, data) {
const event = this.events[eventName];
if( event ) {
event.forEach(fn => {
fn.call(null, data);
});
}
}
subscribe(eventName, fn) {
if(!this.events[eventName]) {
this.events[eventName] = [];
}
this.events[eventName].push(fn);
return () => {
this.events[eventName] = this.events[eventName].filter(eventFn => fn !== eventFn);
}
}
}
назначение
MY.emitter.subscribe('event:eventname', data => {
blabla(data);
});
и отправка из своего объекта
в MY
this.emitter.emit('event:eventname', {data});
|
Signal, https://javascript.ru/forum/project/...atcher-js.html
EventDispatcher(Gtdocument, true);
var mainProcess = new Gtdocument();
mainProcess.addEventListener('select', function() {
});
mainProcess.onselect = function() {
};
mainProcess.dispatchEvent('select');
|
| Часовой пояс GMT +3, время: 14:30. |