Я хотел бы перечислить все папки в каталоге и в конце списка, сколько папок есть.Где находится условие гонки в этой функции 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);
}
});
}
});
Код должен:
- чтения каталога
- Increment
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
Где состояние гонки происходит?