this.emit(“ready”)在node.js

时间:2015-09-14 07:29:35

标签: node.js eventemitter

我正在尝试在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”

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

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

1 个答案:

答案 0 :(得分:2)

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

只是颠倒最后两个陈述

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

foo.Something();