у меня есть две функции.
первая зацикливает некоторые папки, чтобы получить путь, путь разрешается в массиве.
вторая функция получает это значение и должна зацикливаться на этоммассив с fs.readdir для проверки количества изображений в этих папках.
Функция должна разрешать объект, содержащий путь и значение количества изображений в папках.
Моя проблемав том, что я просто правильно разрешаю первую папку и вместо общей суммы всех остальных.
Также я создал функцию обратного вызова, которая вызывает функцию, которая разрешает обещание следующим образом:
async pResolve(pr) {
return new Promise((res, rej) => {
res(pr);
});
}
Я добавил эту функцию в цикл forEach следующим образом:
let x = pResolve(obj);
res(x);
Я попытался разрешить ее в:
Promise.all([folderList]).then(arrList => {
console.log(array);
});
}
Код во второй функции выглядит следующим образом:
async loopOverArray(){
const getPaths = await this.checkGalleryFolder();
let folderList = new Promise((res, rej) => {
getDir.forEach(val => {
let obj = {};
fs.readdir(val, (err, data) => {
obj.path = val;
obj.img = data.length;
res(obj);
});
});
});
}
async checkGalleryFolder() {
const pathArr = [];
return new Promise((res, rej) => {
fs.readdir(this.p, (err, folders) => {
folders.forEach((val, i) => {
if (val.includes("set")) {
let gPath = this.p + `/${val}`;
pathArr.push(gPath);
res(pathArr);
// The function resolves this:
// [ '/sandbox/src/public/set1',
// '/sandbox/src/public/set2',
// '/sandbox/src/public/set3' ];
}
});
});
});
}
};
Как я уже говорил, я получаю объект, и он выглядит так:
[{ path: '/sandbox/src/public/set1', img: 12 }];
Однако результат должен выглядеть следующим образом:
[ { path: '/sandbox/src/public/set1', img: 12 },
{ path: '/sandbox/src/public/set2_f', img: 0 },
{ path: '/sandbox/src/public/set2', img: 12 },
{ path: '/sandbox/src/public/set3', img: 0 },
{ path: '/sandbox/src/public/set1_f', img: 0 } ];
Как я могу решить этоОбещать правильно?И почему функция checkGalleryFolder () дает мне правильный массив, а другая нет?