this.emit("ready") ничего не делает в node.js

Я пытаюсь написать простую библиотеку в node.js. Вот мой библиотечный код в файле с именем "index.js" в папке "lib":

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 ответ

Решение

Единственное, что вы делаете неправильно, это то, что вы вызываете функцию (генерируете событие) перед тем, как ее прослушать.

Просто инвертируйте последние 2 утверждения

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

foo.Something();
Другие вопросы по тегам