大部分回调函数都有传递给它们的自动参数,如错误或结果缓冲区。使用回调时,常见的一个问题时如何调用给它们传递额外的参数。做到这一点的方法是在一个匿名函数中实现该参数,然后用来自匿名函数的参数调用回调函数。
清单: 实现了创建一个匿名函数来添加未由事件发出的附加参数
清单: 实现了创建一个匿名函数来添加未由事件发出的附加参数
var events =require('events');
function CarShow() {
events.EventEmitter.call(this);
this.seeCar = function (make) {
this.emit('sawCar',make); //触发事件
};
}
CarShow.prototype.__proto__ = events.EventEmitter.prototype; //所有EventEmitter属性复制到Door对象。
var show =new CarShow();
function logCar(make) {
console.log("Saw a" + make);
}
function logColorCar(make,color) {
console.log("Saw a %s %s", color, make);
}
show.on("sawCar", logCar);//实现logCar(make)回调处理程序
show.on("sawCar", function (make) { //匿名函数随机添加颜色
var colors = ['red', 'blue', 'black'];
var color = colors[Math.floor(Math.random() * 3)];
logColorCar(make,color);
});
show.seeCar("Ferrari");
show.seeCar("Porsche");
show.seeCar("Bugatti");
show.seeCar("Lamborghini");
show.seeCar("Aston Martion");
结果