【问题标题】:node.js - Emit events from an objectnode.js - 从对象发出事件
【发布时间】:2012-05-23 13:11:48
【问题描述】:

我在 node.js 中有以下模块:

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!");
});

我该怎么做?

【问题讨论】:

    标签: node.js asynchronous module eventemitter


    【解决方案1】:

    您需要将obj 设为EventEmitter。这可以很简单地完成 - 只需更改:

    var obj = {};
    

    到这里:

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

    【讨论】:

    • 如果你需要做一个class就是EventEmitter,在this article里面有写出来。
    • 如果你愿意,你可以这样做,但这不是严格要求的。您可以创建通用 EventEmitter 并通过常用的 onemit API 方法与它们进行交互。
    • 糟糕.. 刚刚看到“如果”。我以为你在断言这是必要的。所以是的,完全同意这个说法:)
    • 来自 Node.js 文档nodejs.org/api/modules.html#modules_module_exports的一个非常相似的示例
    • 我认为您需要从 EventEmitter 中删除括号,例如: var EventEmitter = require('events').EventEmitter;
    猜你喜欢
    • 2015-02-19
    • 1970-01-01
    • 2012-09-02
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2014-05-24
    相关资源
    最近更新 更多