2014-11-16 3 views
0

Я занимаюсь обучением себе node.js путем создания личного проекта. Я стараюсь следовать лучшим практикам, разбивая мой код на отдельные модули. Однако я столкнулся с проблемой, когда один из моих модулей обменивается данными с модулем вызывающего абонента. Я использовал функции обратного вызова и события, но модуль вызывающего абонента никогда не получает ничего от вызываемого модуля, если вызываемый модуль сразу не возвращает значение. Пожалуйста, посмотрите на приведенный ниже код и дайте мне знать, что я пропускаю:Модуль Node.js не сообщается

blogs.controller.js (модуль абонентах)

var ImageParser = require('../../components/parsers/ImageParser.js'); 
..... 
var imageParser = new ImageParser(); 
imageParser.on('imagesParsed', function(){ 
console.log('test)}); 

ImageParser.js (так называемый модуль)

var EventEmitter = require('events').EventEmitter; 
var util = require('util'); 

var ImageParser = function(){ 
    this.emit('imagesParsed'); 
}; 

util.inherits(ImageParser, EventEmitter); 

module.exports = ImageParser; 

Внутри функции ImageParser я могу слушать событие, но за его пределами я не могу. Любая помощь будет принята с благодарностью.

Благодаря

+0

Вы настроили обработчик для «imagesParsed», но код выдает событие под названием «imagesParse». – Pointy

+0

Кроме того, испускание события изнутри конструктора не имеет большого смысла. – Pointy

+0

Спасибо, что поймали это. Это была просто опечатка, хотя и не в моем фактическом коде. – trevpry

ответ

1

Я на самом деле нашел свой ответ в ответ на другой вопрос, ответил @ Линус-г-Thiel Кроме того, благодаря @Pointy

Оказывается, мне нужно, чтобы испустить событие из метод, а не конструктор, а слушатель должен быть перед вызовом метода. Теперь работает.