Здравствуйте. Есть функция, рекурсивная, которая бегает по файловой системе
const scanDir = async (dir, filelist = []) =>{
const files = await readdir(dir);
files.forEach(async (file)=>{
const dirFile = path.join(dir, file);
try {
filelist = await scanDir(dirFile, filelist);
}
catch (err) {
if (err.code === 'ENOTDIR' || err.code === 'EBUSY')
{
filelist = await [...filelist, dirFile];
}
else throw err;
}
});
return filelist;
};
Подключенные модули и функции
const fs = require('fs')
,{promisify} = require('util')
,path = require('path')
,jimp = require('jimp')
,readdir = promisify(fs.readdir)
,exists = promisify(fs.exists)
,mkdir = promisify(fs.mkdir)
,copyFile = promisify(fs.copyFile);
Я наверное что-то не понимаю, опыта мало, но как я вижу, она возвращает массив filelist, который передается в рекурсию дальше.
Но как принять этот массив после окончания работы функции?
То есть вот так не работает:
const myArr = scanDir(dir);
Пробовал это оборачивать в async функцию и ждать пока scanDir разрезолвится, как-то так:
(async()=>{
const myArr = await scanDir(dir);
})()
Но это тоже не работает. Так же еще пробую так:
scanDir(dir).catch(
(err)=>{
console.log(err);
}
).then(
(data)=>{console.log(data.length)}
);
В data возвращается массив, но он пустой. Подскажите пожалуйста, как правильно получить наполненный массив из функции scanDir?