![](/img/trans.png)
[英]How to use try/catch, promise catch and async function correctly?
[英]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.