我正在使用Node.js构建一个系统,该系统旨在查找数组中所有文件夹中的所有文件,对其进行统计,然后使用该信息进行一些额外的工作。
我正在使用fs.readdir()同步地从每个文件夹中获取所有文件。我的代码如下:
for(i=0,max=paths.length; i<max; i++) {
var path = paths.pop();
console.log("READING PATH: " + path);
fs.readdir(path, function(err, files) { handleDir(err, files, path); });
}
问题在于,根据readdir()的执行速度不同,handleDir()得到了错误的路径。这是因为在回调函数运行时,下一个循环已经开始,也就是说路径变量已经改变。
所以,我需要想办法将该路径变量锁定到其特定的回调函数中。我想不出任何好的方法来做到这一点 - 有人有什么想法吗?