2012-05-16 3 views
2

я следующий модуль в Node.js:Node.js - Emit события от объекта

var obj = {}; 
obj.prop1 = "value1"; 
obj.prop2 = "value2"; 

asyncFunction(function(data) { 
    obj.prop3 = data; 
    // I would like to do: obj.emit("completed"); 
}); 

module.exports = obj; 

Так что я могу импортировать это нравится:

var imp = require('./obj'); 

imp.on("completed", function() { 
    console.log("Hello!"); 
}); 

Как я могу это сделать?

ответ

3

Вам необходимо будет сделать obj a EventEmitter. Это можно сделать довольно просто - просто изменить:

var obj = {}; 

Для этого:

var EventEmitter = require('events').EventEmitter; 
var obj = new EventEmitter(); 
+2

Если вам нужно сделать * класс *, который EventEmitter, она прописана в [этой статье] (http://howtonode.org/demystifying-events-in-node). – Amadan

+0

Вы можете сделать это, если хотите, но это не обязательно. Вы можете создавать общие EventEmitters и взаимодействовать с ними с помощью обычных методов 'on' и' emit' API. – jmar777

+0

Упс .. просто увидел «Если». Я думал, вы утверждаете, что это было необходимо. Итак, да, полностью согласен с этим утверждением :) – jmar777

Смежные вопросы