this.emit("ready") 在 node.js 中什么都不做

this.emit("ready") does nothing in node.js

我正在尝试在 node.js 中编写一个简单的库。这是我的库代码,位于 "lib" 文件夹中名为 "index.js" 的文件中:

var util = require("util");
var EventEmitter = require("events").EventEmitter;
util.inherits(Foo, EventEmitter);

function Foo() {
    EventEmitter.call(this);
}

Foo.prototype.Something = function() {
  console.log("Hello World")
  this.emit("ready")
}

module.exports = Foo

下面是我项目文件夹根目录中名为 index.js 的文件中的一些测试代码:

var Foo = require("./lib/index.js");
var foo = new Foo();

foo.Something();

foo.on("ready", function() {
    console.log("Blah")
})

当我 运行 此代码与节点 v0.12.7 时,我看到 "Hello World",但看不到 "Blah"

我不认为我做错了什么,因为我之前在另一个项目中使用过发射器,但即使复制该代码也不起作用。

关于为什么它不起作用的任何线索?

你唯一做错的是你在听之前调用函数(发出事件)。

只需反转最后 2 个语句

foo.on("ready", function() {
    console.log("Blah");
});

foo.Something();