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 });

浙公网安备 33010602011771号