Uncaught SyntaxError: await is only valid in async functions...,以及async的就近原则

本文指导如何修复UncaughtSyntaxError: await is only valid in async functions...问题,重点讲解await关键字需在async函数内,并介绍async的就近原则,通过实例解析异步函数和模块顶层的适用规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 当你遇到这个问题时:Uncaught SyntaxError: await is only valid in async functions and the top level bodies of modules。
    你就要去看一下你的await关键字是否放在async声明的函数里面,正确写法如下:
async function insideFn() {
   await promiseFn()
   console.log('第二步执行完毕')
 }
  1. async的就近原则
    有时候我们在async声明的函数里面使用await还是出现会上面的错误,比如下面代码会报错:
function promiseFn() {
    return new Promise((res) => {
      setTimeout(() => {
        console.log('第一步执行完毕');
        res('done')
      }, 500)
    })
  }

  async function outsideFn(){

    function insideFn() {
      await promiseFn()
      console.log('第二步执行完毕')
    }

    insideFn()
  }

  outsideFn()

这是因为await调用promise时,它所处的最近一层函数是insideFn,而async声明在更外部的函数outsideFn里面,这时我们只需要将async放入离await最近的函数insideFn就好,这就是async的就近原则:

function outsideFn(){

    async function insideFn() {
      await promiseFn()
      console.log('第二步执行完毕')
    }

    insideFn()
  }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值