向回调函数添加附加参数

2024-04-28

我正在 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(使用前将#替换为@)

向回调函数添加附加参数 的相关文章

随机推荐