async和await的区别

async和await的区别

      1,saync是“异步”的简写,await可以认为是async  await的简写

       2,async用于声明一个函数是异步的,await用于等待一个异步方法执行完成

async的作用

       async的返回值是一个Promise函数

        返回结果:

       要处理这个promise对象,我们需要使用.then

      返回结果

       如果async没有返回值的情况下,会返回undefined

       await的作用

       await作为async函数执行完成,返回的一个表达式,这个表达式可以是一个promise对象或者是其他值(换句话说,没有特定值)

      返回结果

       await等到结果之后

       await是个运算符,用于组成表达式,await表达式的运算结果取决于他等到的东西。

       如果等到的是promise对象,那么就会造成await阻塞,等promise对象resolve,然后得到resolve的值,作为await表达式的运算结果

       这就是await必须在async函数中的原因,async函数调用不会造成堵塞,它内部所有的堵塞都被封装在一个promise对象中异步执行

       上面例子三秒后输出hello world

       表明async/await在同步和异步之间的用处,asyncPrint函数里面的同步操作comsole.log必须要等之前的await执行完之后才能被执行

 

async await优势在于处理then

        单一的promise链并不能发现async/await优势,但是如果需要处理多个promise链的时候,async/await优势就凸显出来了,promise通过多层then链来解决多层回调问题,现在async/await又来进一步优化它

同步异步执行顺序

       这个涉及到JavaScript的执行机制EventLoop,大概意思是这样的:

      1,引擎先判断JS代码是同步还是异步,同步就进入主线程,异步就执行event table

      2,异步任务在event table中注册函数,当满足触发条件后,被推入event queue

      3,同步任务进入主线程后一直执行,直到主线程空闲时,才会去event queue中查看是否有可执行的异步任务,如果有,就推入主线程

      所以,即便是物理位置,异步代码在同步代码之前,也会先执行同步代码,在执行异步代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值