gpt4 book ai didi

javascript - 如果异步函数出错,如何执行代码块

转载 作者:行者123 更新时间:2023-12-01 01:12:12 25 4
gpt4 key购买 nike

const myFunction = async() => {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com/');

const performanceTiming = JSON.parse(
await page.evaluate(() => JSON.stringify(window.performance.timing))
);
console.log(performanceTiming);

await browser.close();
} catch (error) {
console.log(`catch error`, error);
}
};

(async function() {
for (let i = 0; i < 2; i++) {
const result = await myFunction();
if (result) {
console.log(`it worked`);
} else {
console.log(`Did not work work for iteration #: ${i + 1}, trying again...`);
i--;
}
}
})();

myFunction 是一个异步函数。我在 IIFE(立即调用函数表达式)中调用它。在 IIEF 内部,我期望 else block 仅在出现问题时才执行。但是当我运行它时,我从 myFunction 收到控制台消息;这意味着没有出错,但是 bock 被执行了,我陷入了无限循环。我做错了什么?

最佳答案

What's wrong am I doing?

如果 result 是真值,则仅执行 if block 。但 myFunction 永远不会返回任何内容,因此返回值将始终是(解析为的 promise )undefined。成功的话你必须返回一些东西。

或者,如果返回某些内容没有意义,则让错误冒泡并将 try...catch 子句放入循环内。

关于javascript - 如果异步函数出错,如何执行代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55068039/

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