Node.js readdir回调调用两次

时间:2016-08-23 20:04:47

标签: javascript node.js fs

过去至少有两篇关于此的帖子:

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的渲染过程中。

0 个答案:

没有答案