async函数内第二个await报错:await仅在async函数及模块顶层有效
问题原因
你编写的getScoreGET函数本身语法完全合规,所有await都在async声明的函数作用域内,不可能触发该语法错误。报错实际来自你调用这个异步函数的代码位置,是你在非async函数、或者非module类型的普通script全局作用域中使用了await调用该函数导致的。
修复方案
你可以任选以下任意一种方法适配调用逻辑:
- 方案1:使用
.then()链式调用处理返回结果,无需额外加await,可在任意位置使用:
getScoreGET('你的请求接口地址').then(data => { // 此处处理拿到的响应数据 console.log(data) })
- 方案2:如果需要在全局作用域直接用
await调用,将对应的script标签设置为module类型:
<script type="module"> // 模块顶层作用域支持直接使用await const result = await getScoreGET('你的请求接口地址') console.log(result) </script>
- 方案3:将调用逻辑包裹在另一个async函数中执行:
async function handleRequest() { const result = await getScoreGET('你的请求接口地址') console.log(result) } // 执行外层函数 handleRequest()
如果排查后仍有问题,可以补充你调用该函数的相关代码,即可快速定位具体问题。
内容的提问来源于stack exchange,提问作者Denis Pujadas
相关产品推荐
相关产品推荐

