《深入浅出node.js》 P77 学习
///用于处理多个事件对应一个侦听器的情况 var count = 0;var results = {};var done = function (key, value){ results[key] = value; count++; if (count === 3){ ///渲染页面 render(results); }};fs.readFile(template_path, "utf8", function(err, template){ done("template", template);});db.query(sql, function(err, data){ done("data", data);});lion.get(funciton (err, resources){ done("resources", resources);});///2015-10-14 11:05:49///使用偏函数来处理哨兵变量和第三方函数的关系var after = function (times, callback) { var count = 0, results = {}; return function (key, value){ results[key] = value; count++; if (count === times) { callback(results); } };};var done = after(times, render);///事实上这是在对done作初始化,同时初始化的还有done的属性count, results///如果再用after初始化另外一个函数,则二者之间的count和results互不相干。done = function (key, value){ results[key] = value; count++; if (count === times) { callback(results); }}emitter.on("done", done);///事实上是emitter.on("done", function(key, value){ results[key] = value; count++; if (count === times) { callback(results); }})emitter.emit("done", "template", template);///监听到事件之后,运行的函数变成:emitter.on("done", function("template", template){ functionbody;})