这个问题在这里已经有了答案:
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/