我正在 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() 得到了错误的路径。发生这种情况是因为在回调运行时,下一个循环已经开始 - 这意味着路径变量已更改。
因此,我需要做的是以某种方式将该路径变量锁定到它的特定回调函数。我想不出任何好的方法 - 谁有一些想法?
最佳答案
没有 block 作用域,所以使用作用域函数。
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);
}
}
关于javascript - 向回调函数添加额外的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5997296/