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();