nodejs业务逻辑需要两个或多个回调时间的结果,解决方式

 1 /**
 2  * Created by li on 2015/12/8.
 3  */
 4 var after = function (times, render) {
 5     var count = 0, result = {};
 6     return function (key, value) {
 7         result[key] = value;
 8         count++;
 9         if (count === times) {
10             render(result)
11         }
12     }
13 }
14 function render(result) {
15     console.log(result)
16 
17 }
18 
19 /*
20  *done 相当于为after中return的function函数
21  * var done= function (key, value) {
22  result[key] = value;
23  count++;
24  if (count === times) {
25  render(result)
26  }
27  }
28  */
29 var done = after(3, render)
30 done('resource', '1.css');
31 done('data', '1.css');
32 done('tem', '1.css');

使用nodejs中的Event实现多对多模式(即一个业务逻辑需要多个回调事件的结果,并根据多个毁掉事件结果,进行不同的处理)

 1 var events = require('events');
 2 var eventEmitter = new events.EventEmitter();
 3 
 4 var after = function (times, render) {
 5     var result = {}, count = 0;
 6     return function (key, value) {
 7         result[key] = value;
 8         count++;
 9         if (count === times) {
10             render(result);
11         }
12     }
13 }
14 function render(result) {
15     console.log(result);
16 }
17 var done = after(3, render);
18 //声明监听事件,对应多个处理
19 eventEmitter.on('done', done);
20 eventEmitter.on('done', other);
21 fs.readFile("file_path", "utf8", function (err, template) {
22     eventEmitter.emit('done', 'template', template);
23 });

 

posted @ 2015-12-08 20:18  程序猿进化之路  阅读(448)  评论(0)    收藏  举报