即使代码正确,异步等待也会出现语法错误



我有非常简单的代码如下。

函数ls有async关键字,它返回Promise。

但是,调用常量val = await ls()会出现以下错误。

SyntaxError: await is only valid in async functions and the top level bodies of modules

有人能帮助我为什么这个错误会出现吗:

  1. 函数ls有async关键字
  2. 它还返回一个Promise

此外,使用下面这样的then子句,它可以很好地进行

ls().then(val => console.log(val)).catch(e => e)

但下面的代码不起作用

async function ls() {
return new Promise((resolve) => {
resolve('Print Output !!')
});
}

const val = await ls()
console.log(val)

async function ls() {
return new Promise((resolve) => {
resolve('Print Output !!')
});
}
// Way 1
async function test() { //function created for "await ls()"
const val = await ls(); //this await requires async
console.log("Way 1 " + val)
}
test();
// Way 2
(async function() {
const val = await ls();
console.log("Way 2 " + val)
})();

最新更新