Код работает нормально при запуске в powershell, но когда я запускаю его через npm run dev, он выводит обещание, но обещание не разрешается - PullRequest
0 голосов
/ 08 июня 2019

Мой код разрешает обещание через 1 минуту в powershell.Но когда я запускаю его с помощью веб-пакета, он выводит только обещание, но обещание не разрешается.Может быть, это из-за времени, затраченного на выполнение обещания.

Я коплю веб-сайт для новостей.Если новость найдена, я вывожу 1, я вывожу 0. Функция a() в коде делает это.Поскольку это асинхронная функция, она возвращает обещание.Но когда я пытаюсь разрешить это обещание в функции aa() с помощью .then(), оно не разрешается.Ничего не выводится.

(async () => {
  async function a() { // this function does t=web scraping and returns a promise
    let Url = 'https://newsapi.org/v2/everything?q=from=2019-04-31 & sortBy = publishedAt & apiKey = 07 eda57a8a364c4cb2dad52e00ff6865 ';
    const browser = await puppeteer.launch({
      headless: true
    });
    const page = await browser.newPage();
    await page.setViewport({
      width: 1920,
      height: 926
    });
    await page.goto(Url, {
      waitUntil: 'domcontentloaded'
    });
    await page.addScriptTag({
      url: 'https://code.jquery.com/jquery-3.2.1.min.js '
    });
    let news = await page.evaluate(() => {
      $.expr[":"].contains = $.expr.createPseudo(function(arg) {
        return function(elem) {
          return
          $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
        };
      });
      var str = "Influenza has been ruled out, and at this stage, we do not believe there is a risk to the public "

      var body = $("body");
      var elements = $("*:contains('" + str + "')").filter(
        function() {
          return $(this).find("*:contains('" + str + "')").length == 0
        })
      return elements;
    });
    browser.close();
    return news["length"]
  }

  async function aa() {
    let y = a(); // it is outputing a promise
    alert(y)
    y.then(function(result, error) { //IT IS NOT WORKING
      if (result) {
        alert(result)
      } else {
        alert(error)
      }
    })
  }
  let c = aa();
})()

ожидаемый результат: 1 или 0;без ошибок

...