【发布时间】:2019-12-29 17:22:48
【问题描述】:
在 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
这看起来很奇怪,因为我还不如同步地做所有事情,而不是把我的整个程序包装在一个异步函数中。
【问题讨论】:
-
好吧,你不能,但
async / await的全部意义在于,你可以在browser.close之前继续,无论你想从page刮取什么,因为那时page将准备好被操纵。但是,asyncIFFE 本身将返回一个承诺,如果这是您的问题,您可以在其上连接一个不错的承诺链 -
要定义一个页面,你首先需要一个浏览器......就像你需要先打开浏览器而不是打开其中的页面/标签一样......因此你需要同步运行它们并@ 987654328@ 是这样做的方法......也许
async关键字让你感到困惑
标签: javascript node.js asynchronous async-await puppeteer