看完你还会对async await感到疑惑吗

319 阅读1分钟
  • 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 这是本人写的第一篇分享知识类的文章,以后也会陆续开始分享自己的一些干货,由于经验有限可能有很多不足,不过还是希望能帮到同样在努力中的你们,一起加油吧~

大家都知道async和await一般都是配套使用的,但是为什么有时候async搭配使用await并不能实现想要的同步效果呢?请继续往下看一定会解决您的一些疑惑。

  • 首先看一段非常基础的一个使用async和await的例子:
function testAwait(){
    return new Promise((resolve, reject)=>{
        setTimeout(()=>{
            resolve(123)
        },3000)
    })
}
async function testAsync(){
    let n = await testAwait()
    console.log(n)
}
testAsync()

上面代码会在3秒钟之后打印出123。需要注意的地方有:
如果想要等待3秒再执行testAwait后面的操作,首先testAwait函数中可以return new Promise,await返回的是一个promise对象。注意需要加上return

  • 如果不使用return,那么await后面必须是一个async函数,也就是上面的一段代码还可以写成下面这样:
async function testAwait(){
   await new Promise((resolve, reject)=>{
        setTimeout(()=>{
            console.log(111)
            resolve()
        },3000)
    })
}
async function testAsync(){
    await testAwait()
    console.log(222)
}
testAsync()

上面代码仍可以达到想要的效果,代码执行结果为:3秒中之后依次打印出111和222。
所以我们平时使用async和await的时候只需要注意这两点,基本就不会出现什么问题了,当然还有很重要的异常处理也别忘了哦。

本次小分享就是这些了,我们下期再见,拜拜~