簡體   English   中英

如何為異步功能使用Promise?

[英]How to use promise for async function?

如何為該異步功能使用Promise?

當我調用異步函數時,有時會失敗,並且在日志中會顯示未處理的承諾。 我在這里如何使用promise?

async function getDate(param) {
    const browser = await puppeteer.launch({ headless: true });
    const page = await browser.newPage();

    const targetUrl = `http://some-site.com/summary?t= ${param} &culture=en_US`;
    await page.goto(targetUrl);

    const dateSelector = "some-css-selector";

    const dateText = await page.evaluate((sel) => {
        return document.querySelectorAll(sel)[0].innerHTML;
    }, dateSelector);

    const date = dateText.substring(6, 16);
    console.log(date);

    browser.close();
    return date;
}
//I am calling this function this way
const myDate = getDate(myParam);

編輯1:按照建議,我添加了try / catch塊,似乎可以解決錯誤問題。

現在,如何在myDate上使用.then() 由於getDate()是異步函數,因此是一個承諾。 解決諾言后,我想做這樣的事情:

myDate.then(
        console.log(`date1`, myDate)
    )

現在它來了

date1 Promise { <pending> }

編輯2:這解決了

myDate.then(result => console.log(result))

使用try/catch

async function getDate(param) {
  try {
    const browser = await puppeteer.launch({ headless: true });
    const page = await browser.newPage();

    const targetUrl = `http://some-site.com/summary?t= ${param} &culture=en_US`;
    await page.goto(targetUrl);

    const dateSelector = "some-css-selector";

    const dateText = await page.evaluate((sel) => {
        return document.querySelectorAll(sel)[0].innerHTML;
    }, dateSelector);

    const date = dateText.substring(6, 16);
    console.log(date);

    browser.close();
  } catch (error) {
    console.error(error);
  }
}

在這里了解更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM