node.js 多异步之间的协作方案

本文详细介绍了在Node.js环境中如何利用事件处理机制与偏函数技术来简化并优化代码流程,通过实例展示了如何实现多个事件对应单一监听器的高效管理,并深入探讨了哨兵变量和第三方函数之间的互动关系。

《深入浅出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; })

 

转载于:https://www.cnblogs.com/lswit/p/4876906.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值