在module.exports函数中创建事件

时间:2015-02-15 13:02:17

标签: node.js

我试图创建一个模块,其中包含我可以从索引文件中调用的模块(在需要之后)。 我的代码包含var events = require("events");,我在这里只编写了棘手的部分。

index.js:

var reqw = require('./module.js');
reqw.on('data', function(d) {
    console.log(d);
});

module.js:

module.exports = {
    listaccts: function() {
        events.EventEmitter.call(this);
    }
}
util.inherits(exports.listaccts, events.EventEmitter);
exports.listaccts.prototype.listme = function() {
    thisList = this;
    var req = https.request(requestOptions, function(res) {
        res.on('data', function(chuck) {
            store = chuck;
        });
        res.on('end', function(d) {
            thisList.emit("data", store.toString());
        });
    });
}

搜索了整个我们并找到了正确答案..

1 个答案:

答案 0 :(得分:1)

稍微修改了您的代码:

module.js

function listaccts(){

}
util.inherits(listaccts, EventEmitter);
listaccts.prototype.listMe = function(){
    var self = this;
    var store = [];
    console.log('here');
    var req = https.request(requestOptions, function(res) {
        res.on('data', function(chuck) {
            console.log('data');
            store.push(chuck);
        });
        res.on('end', function() {
            console.log('end');
            self.emit("data", store);
        });
    });
    req.end();
};

module.exports = listaccts;

index.js

var reqw = require('./module');
var obj = new reqw();
obj.listMe();
obj.on('data', function(err, data) {
    console.log(err);
});

req.end很重要,我忘了包含并且有一个永无止境的循环。

创建了绑定this的实例,因此不需要EventEmitter.call。 也许你想在你的构造函数中使用listMe函数。

希望得到这个帮助。