Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как сделать в в своей new Function event .on (https://javascript.ru/forum/misc/70977-kak-sdelat-v-v-svoejj-new-function-event.html)

Signal 16.10.2017 17:00

как сделать в в своей new Function event .on
 
Здравствуйте.
есть свой объект
var MainProcess = new Gtdocument();

как сделать так, что можно было потом принимать сообщения
типа
MainProcess.on('SELECT', function()....

Nexus 16.10.2017 17:02

Signal, нужно добавить классу "Gtdocument" новый метод.
Gtdocument.prototype.on=function(){};

ruslan_mart 16.10.2017 21:21

https://github.com/medikoo/event-emitter

Signal 16.10.2017 23:21

Цитата:

Сообщение от Nexus (Сообщение 467549)
Signal, нужно добавить классу "Gtdocument" новый метод.
Gtdocument.prototype.on=function(){};

а как туда отсылать сообщения?

можно краткий код реализации?

Alexandroppolus 17.10.2017 02:13

Signal,

Всё проще некуда. Ставишь тот емиттер по ссылке. Потом в коде:
var ee = require('event-emitter');

ee(Gtdocument.prototype);


Теперь на экземпляры Gtdocument можно подписываться. А они, в свою очередь, могут вызывать в своих методах this.emit(...)

Signal 11.11.2017 18:54

забыл отписаться в этой теме, ну вопрос-то был в теме 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});

ruslan_mart 11.11.2017 19:57

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, время: 23:36.