Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js readdir回调调用了两次_Javascript_Node.js_Fs - Fatal编程技术网

Javascript Node.js readdir回调调用了两次

Javascript Node.js readdir回调调用了两次,javascript,node.js,fs,Javascript,Node.js,Fs,过去这里至少有两篇关于这方面的帖子: 两者都有一个答案,即readdir本身被称为两次,因此没有什么神秘之处。但我的情况不同,如下代码所示: console.log('calling readdir'); fs.readdir(folder, function (err, files) { console.log('readdir callback'); // ... deal with the files } ); 这将导致此输出: cal

过去这里至少有两篇关于这方面的帖子:

两者都有一个答案,即readdir本身被称为两次,因此没有什么神秘之处。但我的情况不同,如下代码所示:

console.log('calling readdir');
fs.readdir(folder,
    function (err, files) {
        console.log('readdir callback');
        // ... deal with the files
    }
);
这将导致此输出:

calling readdir
readdir callback
readdir callback
并非所有文件夹都会发生这种情况。作为解决方法,我设置了一个标志:

let wasCalled;
...
wasCalled = false;
console.log('calling readdir');
fs.readdir(folder,
    function (err, files) {
        if (!wasCalled) {
            console.log('readdir callback');
            wasCalled = true;
            // ... deal with the files
        }
    }
);
这样可以避免在第二次调用中进行处理:

calling readdir
readdir callback
我看不出我做错了什么,因为日志显示在第一种情况下,对readdir的单个调用有两个回调。但也许其他人遇到了这个问题,并发现了readdir中的错误以外的其他东西


这是Electron 1.3.3和Node.js 6.3.0中的一个渲染过程。

我无法重新创建,您使用的是哪个版本?在调用readdir时,您能向我们显示变量“folder”的内容吗?刚刚将其添加到我的帖子中。我怀疑你能否重新创建它,因为我只是在很多不同的文件夹上使用我的应用程序后才注意到它。到目前为止,只有一个文件夹可以做到这一点。也许我的文件系统(Windows10)出了问题,但即使出了问题,也应该只有一次回调。我已经检查过了,err参数两次都为null。忘了提到两个回调的文件数组都是相同的,并且包含所有的文件(只有3个)。好的,我添加到console.log行并得到了这样的结果:用P:\pano调用readdir我刚刚用一些不同的文件夹结构尝试过,我总是只得到一个回调-无论有多少子文件夹/文件。