Node.js readdircallback调用两次

过去在这里至less有两个post:

NodeJS readdir()函数总是运行两次

readfile()callback调用两次

两者都有这样的效果,即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 

我看不出我做错了什么,因为日志logging表明在第一种情况下,一次调用readdir有两个callback。 但也许别人遇到了这个问题,并想出readdir中的一个bug。

这是在使用Node.js 6.3.0的Electron 1.3.3中的渲染器进程中。