简单理解JavaScript里async/await


在JavaScript中,async/await都是非常棒的特性,也都是非常甜的语法糖,而JavaScript的async/await实现,也离不开promise。

1.async和await做了什么?

从字面看,async是"异步"的意思,而await可以认为是async wait的简写。那我们是不是可以理解为async用于申明一个function是异步的,而await用于等待一个异步方法执行完成。

2.async起什么作用?

<script>
        async function asyncTest() {
            return "hello async"
        }
        console.log(asyncTest());
    </script>

在这里插入图片描述
由此可知async函数返回的是一个promise对象,如果在函数中return一个直接量,async会把这个直接量通过Promise.resolve()封装成Promise对象。Promise.resolve(X)可以看作是new Promise(resolve=>resolve(x))的简写,可用于快速封装成Promise实例。
async函数返回的是一个promise对象,可以用then()链来处理这个Promise对象。

3.await到底等什么?

一般都认为await是在等待一个async函数的完成,不过按语法说明,await等待的是一个表达式,表达式的计算结果是Promise对象或其他值。所以这里await等待的是async函数的返回值。

4.await等到了返回值之后做什么?

await等到了一个Promise对象,await是个运算符,用于组成表达式,await表达式的运算结果取决于它等的东西。
等到Promise对象,它会等Promise对象resolve,然后等到resolve的值作为await表达式的运算结果。

5.总结:

async会将它后面的函数的返回值封装成一个Promise对象,而await会等待这个Promise完成,并将resolve的结果返回出来。
async/await的优势在于处理then链,单一的Promise链并不能发现async和await的优势,但是如果需要处理多个Promise组成的then链的时候,优势就体现出来了,Promise通过then链来解决多层回调的问题,现在又用async/await来进一步优化它(Promsie参数传递太麻烦)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值