在一些业务场景会有两个独立函数共同修改一个对象,而我们又不知道对象什么何时完成的时候,就要用回调函数来进行解决。
如:有两个单独文本文件,我们需要获取里面的内容来填充一个对象,我们在填充完成之后来获取对象。
获取文本文件并填充
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| let fs = require('fs');
function fn(acount, callBack){ let obj = {}; return function(key, data){ obj[key] = data;
if(--acount == 0){ callBack(obj); } else { console.log('未执行完毕'); } } }
function getData(data){ console.log('获取完毕', data); }
let newFn = new fn(2, getData);
fs.readFile('./1.text', 'utf8', function(err, data){ if(err){ console.log(err); return; } newFn('name', data); });
fs.readFile('./2.text', 'utf8', function(err, data){ if(err){ console.log(err); return; } newFn('age', data); })
|
应用场景为 需要多次调用、异步执行,但是不知道结果是否符合的情况下,可以指定次数来解决问题;