在Powershell中运行时,代码工作正常,但是当我通过npm run dev运行它时,它会输出promise,但promise无法解决

时间:2019-06-08 05:22:44

标签: javascript webpack promise async-await puppeteer

我的代码在Powershell中运行1分钟后就解决了诺言。但是,当我使用webpack运行它时,它仅输出promise,但是promise无法解决。也许是由于解决承诺花费了时间。

我正在寻找新闻网站。如果找到新闻,则输出1,输出0。代码中的函数a()可以做到这一点。由于它是一个异步函数,因此它返回了promise。但是,当我尝试使用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;没有错误

0 个答案:

没有答案