在Puppeteer教程开始时,它说要这样做:
const puppeteer = require('puppeteer');
(async () =>
{
await page.goto('https://example.com');
const browser = await puppeteer.launch();
const page = await browser.newPage();
await browser.close();
})();
这对我来说似乎很奇怪,因为整个事情都包裹在一个异步函数中。如果我要等到完成再继续怎么办?
编辑-为什么这对我来说很奇怪:
如果我所有的代码都依赖于浏览器,即在此异步功能之外我无能为力,该怎么办?然后我的代码将如下所示:
//nothing up here
(async () =>
{
//EVERYTHING is in here
})();
//nothing down here
这似乎很奇怪,因为我最好同时执行所有操作,而不是将整个程序包装在异步函数中。
答案 0 :(得分:2)
edit
功能的原因
出于向后兼容的原因,您需要将包含async
条指令的代码包装在await
函数内。在ES7之前,您可以使用单词async
作为变量或函数名称,这意味着这是有效的代码:
await
为了不弄乱现有代码,var await = 123;
console.log(await);
关键字仅在await
函数内部起作用,这意味着要编写类似async
的代码,您必须将其放入异步函数中,例如您正在使用。
等待代码完成
要等到代码完成,您可以像这样在最后一个await page.goto(..)
语句之后继续操作:
await