Javascript Node.js readdir回调调用了两次
过去这里至少有两篇关于这方面的帖子: 两者都有一个答案,即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
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我刚刚用一些不同的文件夹结构尝试过,我总是只得到一个回调-无论有多少子文件夹/文件。