Я пытаюсь очистить все эти URL-адреса и передать их в свою базу данных, но когда я возвращаю ответ foreach l oop, я получаю пустой массив.
Для меня ошеломляющая часть - это что, когда я console.log желаемое возвращаемое значение (allUrlsOnSite) внутри foreach l oop, я получаю ответ, который ищу: https://i.stack.imgur.com/quWic.png
Я чувствую, что мне не хватает что-то фундаментальное для работы обещаний.
Спасибо за ваше время.
async function scrapeAllLinksOffPage(url) {
return new Promise((resolve, reject) => {
let x = Xray()
x(url, 'div', [
'a@href'
])
.paginate('a@href')
.limit(0)
.then(function (storeScrapes) {
let arrOfUrls = uniq(storeScrapes);
// console.log(arrOfUrls);
return resolve(arrOfUrls);
})
if (false) {
return reject("failed")
}
});
};
async function consolidateLinksInOneArray(...arr) {
return new Promise((resolve, reject) => {
let urlsPayload = arr[0];
let allUrlsOnSite = [];
urlsPayload.forEach(url => {
scrapeAllLinksOffPage(url).then(res => {
let arrOfUrls = res;
allUrlsOnSite = allUrlsOnSite.concat(arrOfUrls);
uniq(allUrlsOnSite);
console.log(allUrlsOnSite);
})
return resolve(allUrlsOnSite);
})
if (false) {
return reject("failed")
}
});
}
scrapeAllLinksOffPage('https://google.com/').then(res => {
let arrOfUrls = res;
// console.log(arrOfUrls);
consolidateLinksInOneArray(arrOfUrls).then(res => {
console.log(res)
})
})