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块仅在出现问题时才执行。但是运行此命令时,我从myFunction
收到控制台消息;这意味着没有错,但是执行了bock,而我陷入了无限循环。我在做什么错?
答案 0 :(得分:2)
我怎么了?
仅当if
是真实值时,才执行result
块。但是myFunction
从不返回任何内容,因此返回值始终为undefined
。成功的情况下,您必须退还一些东西。
或者,如果没有必要返回任何内容,请让错误冒出来,并将try...catch
子句放入循环内。