Я новичок в 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();
/ * конец файла * /
Спасибо.