我正在 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() 会获取错误的路径。发生这种情况是因为当回调运行时,下一个循环已经开始 - 这意味着路径变量已更改。
所以,我需要做的是以某种方式将该路径变量锁定到它的特定回调函数。我想不出任何好方法来做到这一点 - 有人有一些想法吗?
没有块作用域,因此使用函数作为作用域。
for(var i=0, path, max=paths.length; i<max; i++) {
path = paths.pop();
console.log("READING PATH: " + path);
handlePath( path );
}
function handlePath ( path ) {
fs.readdir(path, onPathRead);
function onPathRead (err, files) {
handleDir(err, files, path);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)