操纵er同步定义浏览器和页面

时间:2019-08-25 00:01:35

标签: javascript node.js asynchronous async-await puppeteer

在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

这似乎很奇怪,因为我最好同时执行所有操作,而不是将整个程序包装在异步函数中。

1 个答案:

答案 0 :(得分:2)

edit功能的原因

出于向后兼容的原因,您需要将包含async条指令的代码包装在await函数内。在ES7之前,您可以使用单词async作为变量或函数名称,这意味着这是有效的代码:

await

为了不弄乱现有代码,var await = 123; console.log(await); 关键字仅在await函数内部起作用,这意味着要编写类似async的代码,您必须将其放入异步函数中,例如您正在使用。

等待代码完成

要等到代码完成,您可以像这样在最后一个await page.goto(..)语句之后继续操作:

await