Здравствуйте. Есть рекурсивная функция, которая ходит по файловой системе и возвращает массив с путями к файлам. Вот так это выглядит:
const fs = require('fs').promises
,readdir = (fs.readdir)
const scanFile = async (dir, filelist = []) =>{
const files = await readdir(dir);
for (let file of files) {
const dirFile = path.join(dir, file);
try {
filelist = await scanFile(dirFile, filelist);
}
catch (err) {
if (err.code === 'ENOTDIR' || err.code === 'EBUSY'){
filelist = [...filelist, dirFile]; //Массив с файлами
}
else throw err;
}
}
return filelist;
};
Мне необходимо получить, помимо массива с путями к файлам, массив путей для директорий. В функцию добавляю пару строк:
const stat = await fs.lstat(dirFile);
и в цикл:
if(stat.isDirectory()){
//arrFolder.push(dirFile); //Массив с папками
arrFolder = [...arrFolder, dirFile];
}
filelist = await scanFile(dirFile, filelist);
Получаю вот такую функцию
const scanFile = async (dir, filelist = []) =>{
const files = await readdir(dir);
const stat = await fs.lstat(dirFile);
for (let file of files) {
const dirFile = path.join(dir, file);
try {
if(stat.isDirectory()){
//arrFolder.push(dirFile); //Массив с папками
arrFolder = [...arrFolder, dirFile];
}
filelist = await scanFile(dirFile, filelist);
}
catch (err) {
if (err.code === 'ENOTDIR' || err.code === 'EBUSY'){
filelist = [...filelist, dirFile]; //Массив с файлами
}
else throw err;
}
}
return filelist;
};
Теперь я хочу возвращать из функции два значения, а не только
“return filelist”
Пробую возвращать объект, но функция ломается, потому что, по всей видимости, аргументы перестают правильно передаваться рекурсивно. Пробовал переписать функцию под аргументы в виде объекта, но ничего не вышло. Подскажите пожалуйста, как мне вернуть несколько значений, что то-вроде этого:
return{
filelist: filelist,
arrFolder: arrFolder
}
И так, что бы функция не сломалась