【发布时间】:2019-02-20 08:40:50
【问题描述】:
所以我在 nodeJS 中使用 puppeteer,并且我有一个函数可以递归调用自身,直到正确加载指定的页面:
const isPageAccessible = async (page, url) => {
var pageRes = await page.goto(url, {
timeout: 10000
}).catch(e => console.log(e));
if (!pageRes || pageRes.status !== 200) {
console.log("Website didn't load properly.")
isPageAccessible(page, url);
} else {
console.log("Loaded!")
return true;
}
}
这里的问题是这个函数在第一次递归调用之后返回 undefined(据我所知这是正常的,因为异步函数必须用一个值解析)。我希望代码等到这个函数用true解析
console.log(await isPageAccessible(page,LOGIN_URL));
console.log("Done!")
所以控制台会记录“完成!”网站加载成功后。现在它正在记录“完成!”即使网站没有加载,因为isPageAccessible 函数在第一次调用后返回 undefined。
任何关于如何解决此问题的想法将不胜感激!
【问题讨论】:
-
为什么不使用循环?
-
你不是在等待递归调用或转发它的结果。
标签: javascript node.js async-await puppeteer