gpt4 book ai didi

javascript - Try Catch 无法捕获 UnhandledPromiseRejectionWarning

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:39:41 30 4
gpt4 key购买 nike

我认为我可以很好地找到我从 puppeteer 那里得到的那些罕见的超时,但有些人为什么没有捕捉到这个超时 - 我的问题是为什么?

代码如下:

var readHtml = (url) => {
return new Promise( async (resolve,reject)=> {

var browser = await puppeteer.launch()
var page = await browser.newPage()

await page.waitForSelector('.allDataLoaded')

.then(() => {
console.log ("Finished reading: " + url)
return resolve("COOL");
})

.catch((err) => {
console.log ("Timeout or other error: ", err)
return resolve("TRYAGAIN");
});
})}

这里是错误....

(node:23124) UnhandledPromiseRejectionWarning: Error: Navigation Timeout Exceeded: 30000ms exceeded at Promise.then 

(node:23124) UnhandledPromiseRejectionWarning:
Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)

我做了一些研究说这可能是因为在 puppeteer newPage() 中有一些 url 还没有完成

但是我的 .catch 怎么不咳嗽呢?

我需要它“TRYAGAIN”,以防它因任何原因失败。现在它只是因错误而停止并且什么都不做。

最佳答案

您正确地catchwaitForSelector 及其链式 promise ,但您没有对launchnewPage 调用 - 它们没有连接到 catch 之后。

因为异步函数已经自动返回 Promise,你可以考虑完全避免使用 Promise 构造函数:

var readHtml = async (url) => {
try {
var browser = await puppeteer.launch()
var page = await browser.newPage()
} catch(e) {
// handle initialization error
}

await page.waitForSelector('.allDataLoaded')
.then(() => {
console.log ("Finished reading: " + url)
return resolve("COOL");
})
.catch((err) => {
console.log ("Timeout or other error: ", err)
return resolve("TRYAGAIN");
});
}

或者,您可以考虑将 catch 放在 readHtmlconsumer 中:

var readHtml = async (url) => {
var browser = await puppeteer.launch()
var page = await browser.newPage()
await page.waitForSelector('.allDataLoaded')
console.log ("Finished reading: " + url)
};
readHtml(someurl)
.catch((e) => console.log('err: ' + e));

关于javascript - Try Catch 无法捕获 UnhandledPromiseRejectionWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50963104/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com