1
我想列出目录中的所有文件夹以及最后列出的文件夹数量。这个fs.readdir函数中的竞态条件在哪里?
这是我的代码:
fs.readdir(dir, (err, folders) => {
if (err) return console.log(err);
let count = 0;
for (let i = 0; i < folders.length; i++) {
let folder = folders[i];
fs.stat(dir + '/' + folder, (err, stats) => {
if (err) return console.log(err);
if (stats.isDirectory()) {
console.log(folder);
count++;
}
if (i >= (folders.length - 1)) {
console.log('folders: ' + count);
}
});
}
});
代码应该:
- 阅读目录
- 增量
count
为每个文件夹目录 - 当目录读取完毕之后,日志
'folders: ' + count
在大多数情况下,这样做的工作,我得到这个:
...
2016-12-20--09-59-12
2016-12-20--09-59-13
2016-12-20--09-59-14
folders: 86
虽然有时我得到这个:
...
2016-12-20--09-59-12
2016-12-20--09-59-11
2016-12-20--09-59-14
folders: 85
2016-12-20--09-59-13
在哪里竞争条件发生了什么?