Я создаю систему в Node.js, которая должна найти все файлы в массиве папок, скопировать их, а затем выполнить некоторую дополнительную работу с использованием этой информации.
Я использую fs.readdir() для синхронного вывода всех файлов из каждой папки. Мой код выглядит следующим образом:
for(i=0,max=paths.length; i<max; i++) {
var path = paths.pop();
console.log("READING PATH: " + path);
fs.readdir(path, function(err, files) { handleDir(err, files, path); });
}
Проблема заключается в том, что в зависимости от того, насколько быстро выполняется readdir(), handleDir() получает неправильный путь. Это происходит потому, что к моменту завершения обратного вызова следующий цикл уже запущен - это означает, что изменена переменная пути.
Итак, что мне нужно сделать, это как-то заблокировать эту переменную пути для конкретной функции обратного вызова. Я не могу придумать какой-либо хороший способ сделать это - у кого есть идеи?