【发布时间】:2017-04-29 16:12:10
【问题描述】:
我在正在阅读的书中找到了以下示例:
function User() {
EventEmitter.call(this);
this.addUser = function (username, password) {
// add the user
// then emit an event
this.emit("userAdded", username, password);
};
}
var user = new User();
var username = "colin";
var password = "password";
user.on("userAdded", function(username, password) {
console.log("Added user " + username);
});
user.addUser(username, password);
在我看来,在这里使用 EventEmitter 是完全多余的。 Promise 会做得更好:
function User() {
this.addUser = function (username, password) {
return new Promise(function (resolve) {
// add the user
// and resolve
resolve();
});
};
}
及用法:
user.addUser(username, password).then(function(username, password) {
console.log("Added user " + username);
});
使用EventEmitter 是否比使用Promises 有任何优势,或者它只是Promises 不可用时的代码?还是node.js不欢迎这种风格?
【问题讨论】:
-
如果您想在使用同一个 hanfler 添加多个用户时收到通知怎么办?
Promise不会在那里工作。一个 Promise 只能用一个值解决一次。 -
对我来说,EventEmitter 和 Promise 的主要区别在于,Promise 只能实现一次,而事件可以触发任意次数。
标签: javascript node.js promise eventemitter