Поймать событие из класса, который наследует EventEmitter, используя классы es6 - PullRequest
1 голос
/ 31 января 2020

Я новичок в Javascript и es6. Я пытаюсь перехватить событие, генерируемое объектом, который является классом ecmascript-6 (es6) с именем LaserHandler, который наследует EventEmitter. Мой слушатель присутствует в объекте, который также является объектом класса es6 с именем QRMarker, который создает экземпляр объекта. Это на nodejs браузер не используется.

Я ожидаю увидеть функцию обратного вызова вызывающего слушателя. Слушатель не уволен. Нет признаков ошибки.

Итак, я попробовал различные альтернативные подходы кодирования, включая 1) использование модуля 'event-emitter-es6' npm. 2) переписать, чтобы использовать const events = require ('events'). EventEmitter и расширяющие события. 3) Изменение местоположения слушателей, излучений и места создания класса.

Результат console.log (qrMarker) : В следующем коде:

QRMarker {
  domain: null,
  _events:
   { stationId: [ [Function: listener], [Function] ],
     '*': [Function] },
  _eventsCount: 2,
  _maxListeners: undefined,
  id: undefined }


const EventEmitter = require('event-emitter-es6');

/ LaserHandler. js /

let qrMarker;
module.exports = class LaserHandler extends EventEmitter {
    constructor(s, l) {
        super();
        logger = l;
        socket = s;
        qrMarker = new QRMaker(this.logger);
    }
    manageLaser() {
        qrMarker.communication(socket);
        socket.on ('LaserDown',  () => { 
        console.log('LaserHandler.manageLaser: received event' 
          )});
        qrMarker.on('stationId', (data) => {console.log(data)} );
        qrMarker.on('*', (data) => {console.log ('Caught event !!!')});
    }
}
/*end of file*/
/* QRMarker.js */
module.exports = class QRMarker extends EventEmitter {

constructor(l, id) {
    super();
    logger = l;
    this.id = id;
}
communication(s) {
    let connected = false;
    let socket = s;
    let dataBuffer;
    let lastStatusCode;

     this.emit( 'stationId', stationId);

     dataBuffer = Buffer.from(data);
            connected = true;
         }
      }
 }
/* end of file */
/* LaserService */

module.exports = class LaserService  {
    constructor () {    
    }

   startNeworking () {
       server = net.createServer();
       server.on('connection', function (socket) {
          let laserHandler = new LaserHandler(socket, logger); 
          laserHandler.manageLaser();
        });

    server.listen(41020, function () {});
   }
}

/ * конец файла * / / * TestLaserService - этот файл выполняется с узла * /

var LaserService = require("../LaserService.js");
let laserService  = new LaserService(2);
laserService.startNeworking();

/ * конец файла * /

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...