Я довольно новичок в узле ... Мне нужно забивать асинхронное поведение узла и структуру обратного вызова в моем сознании. Здесь, где я сейчас боюсь:Узел: Перемещение каталогов в рекурсии
// REQUIRE --------------------------------------------------------------------
fs = require('fs');
path = require('path');
// FUNCTION readAllDirs -------------------------------------------------------
function readAllDirs(dir, result) {
if (!result) {
result = function() {};
};
fs.readdir(dir, function(err, list) {
if(err) { return result(err) };
list.forEach(function(file) {
var fullpath = path.resolve(dir, file);
fs.stat(fullpath, function(err, stat) {
if(err) { return result(err) };
if(stat && stat.isDirectory()) {
readAllDirs(fullpath);
//console.log('In: ' + fullpath);
result(null, fullpath);
}
});
});
});
}
// MAIN -----------------------------------------------------------------------
readAllDirs('/somedir', function(err, dirs) {
console.log(dirs);
});
Я пытаюсь пройти дерево каталогов. В принципе функция работает хорошо ... так как долго я не вызываю, но печатаю имена каталогов на консоли. Все папки и подпапки выглядят как ожидалось. НО, когда я выполняю обратные вызовы, обратный вызов не вызывается для рекурсии глубже первого уровня.
Pleeeaaassee help! Спасибо, парни!
Благодаря Альнитаку. Думая об этом, я сейчас совершенно ясно. Функция обратного вызова (в примере выше функции с console.log ...) должна быть предоставлена для каждого вызова функции readAllDirs. Я не делал этого внутри самой функции readAllDirs. Таким образом, не была определена функция обратного вызова и не console.log .... – user4423309