【发布时间】:2018-07-01 15:09:49
【问题描述】:
我需要函数scrape 来返回在page.on("request") 事件处理程序中获得的值。
async function scrape(url) {
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on("request", async(request) => {
return "fish"
}
await page.goto(url)
}
目前:
const ans = await scrape(url)
console.log(ans)
"undefined'
预期:
const ans = await scrape(url)
console.log(ans)
"fish"
【问题讨论】:
-
你为什么会期待
fish? fish 从 page.on 回调中返回,您根本不会在函数抓取中返回任何内容 - 我建议使用 Promise 包裹page.on... 例如return new Promise(resolve => { page.on("request", request => { resolve("fish"); }); });- 不过,这可能是不好的做法,如果页面从不发出“请求”怎么办! -
为什么你会这样认为?
-
@JaromandaX 你的建议在我稍微调整后奏效了。感谢您指出这种方法的缺点。我将编写一些代码来处理此类错误情况。再次感谢!
-
after I tweaked it a bit- 真的吗?我的代码出了什么问题:p -
哈哈...没错,我只是不得不让 promise 的解析函数异步:
return new Promise(async(resolve)...因为我在其中运行另一个异步函数
标签: javascript node.js puppeteer