初级方案:通过递归处理异步回调
我们可以使用递归作为代码的执行控制工具。把需要执行的操作封装到一个函数中,在回调函数中通过递归调用控制代码的执行流程,废话不多说,上个代码吧:
var fs = require('fs');// 要处理的文件列表var files = ['file1', 'file2', 'file3'];function parseFile () { if (files.length == 0) { return;
} var file = files.shift();
fs.readFile(file, function (err, data) { // 这里处理文件数据
parseFile(); // 处理完毕后,通过递归调用处理下一个文件 });
}// 开始处理parseFile();
以上代码已依次处理数组中的文件为例,介绍了通过递归的方式控制代码的执行流程。
应用到一些简单的场景中还是不错的,比如:我们将一个数组中的数据,依次保存到数据库中就可以采用这种方式。
通过递归的方式可以解决一些简单的异步回调问题。不过对于处理复杂的异步回调还是显得有些无能为力(如需要同步多个异步操作的结果)。