javascript - 为什么这个 puppeteer 的异步函数语法?

标签 javascript node.js asynchronous puppeteer

这个问题在这里已经有了答案:





What is the (function() { } )() construct in JavaScript?

(29 个回答)


1年前关闭。




我在看如何使用Puppeteer对于测试和我遇到的所有代码示例,使用以下语法:

(async () => {
    //function body
})();
现在我的问题不仅仅是它的作用,因为我了解异步函数是什么。我想知道的是这个语法是什么意思,它是如何解析的?我是 Node.js 和 Puppeteer 的新手,我以前从未见过这种情况。我找到的教程都没有解释这里发生了什么。
我找到了this这解释了 => 的目的运算符(operator)。所以看来async () =>就像 async function () 的简写?我仍然很困惑为什么整个事情都被括号包围,然后是另一对括号。
MDN表明您可以使用 async function fname() {...} 在 javascript 中声明一个异步函数.这似乎很简单。那么为什么不使用这种语法呢?有什么区别?

最佳答案

async 函数用括号括起来,然后是尾随 ()以便立即调用该函数。见 the article about IIFE on MDN以获得更详细的解释。
这可能是因为当前版本的 Node.js 不支持顶级等待。

$ node
Welcome to Node.js v14.12.0.
Type ".help" for more information.
> async function foo() { return Promise.resolve(true); }
undefined
> await foo()
await foo()
^^^^^

Uncaught SyntaxError: await is only valid in async function
> 

关于javascript - 为什么这个 puppeteer 的异步函数语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64039393/

相关文章:

c# - .NET 单任务等待的用例

node.js - NodeJS : Async/Await Raspberry Pi

.net - Caliburn EventAggregator moq 验证 PublishOnUIThreadAsync 异步方法

javascript - Highcharts 仪表 : Labels radius styling

javascript - 如何在倒计时达到 0 时更新日期而不刷新浏览器

node.js - 在nodejs中解析postdata值

node.js - 同一操作在 nodejs 中的有限函数调用?

javascript - Grails 3.0 如何在 GSP 中使用 Javascript?

javascript - 无法从 url 打印参数

javascript - 抛出消息;类型错误 : first argument must be a string or Buffer