我在一本书中找到了以下例子:
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在这里完全是多余的.承诺会做得更好:
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有任何优势,或者它只是Promise不可用时的代码?或者在node.js中不欢迎这种风格?
解决方法:
EventEmitter和Promise之间的主要区别在于,Promise只能实现一次,而事件可以被触发任意次数