Массив Foreach возвращается пустым, но показывает желаемый ответ в пределах l oop? - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь очистить все эти 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)
  })
})


  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...