过去至少有两篇关于此的帖子:
NodeJS readdir() function always being run twice
readfile() callback called twice
两者都有回复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中的一个bug以外的东西?
这是在带有Node.js 6.3.0的Electron 1.3.3的渲染过程中。