Async/Await

什么是Async/Await?

1、 async函数返回一个 Promise 对象。
2、async函数内部return语句返回的值,会成为then方法回调函数的参数。
3、async/await是写异步代码的新方式,以前的方法有回调函数和Promise。
4、async/await是基于Promise实现的,它不能用于普通的回调函数。
5、async/await与Promise一样,是非阻塞的。   
6、async/await使得异步代码看起来像同步代码,这正是它的魔力所在。

为什么Async/Await更好?

1)使用async函数可以让代码简洁很多,不需要像Promise一样需要些then,不需要写匿名函数处理Promise的resolve值,也不需要定义多余的data变量,还避免了嵌套代码。

2) 错误处理:
    **Async/Await 让 try/catch 可以同时处理同步和异步错误。**在promise里面,try/catch 不能处理 JSON.parse 的错误,因为它在Promise中。我们需要使用 .catch,这样错误处理代码非常冗余。并且,在我们的实际生产代码会更加复杂。使用aysnc/await的话,catch能处理JSON.parse错误:
3)async/await能够使得代码调试更简单。

《1》不能在返回表达式的箭头函数中设置断点
   《2》如果你在.then代码块中设置断点,使用Step Over快捷键,调试器不会跳到下一个.then,因为它只会跳过异步代码。
  4) 使用await/async时,你不再需要那么多箭头函数,这样你就可以像调试同步代码一样跳过await语句
5)错误栈
调用多个.then方法 Promise链中返回的错误栈不会给出错误发生位置的线索。更糟糕的是,它会误导我们;错误栈中唯一的函数名为callAPromise,然而它和错误没有关系。(文件名和行号还是有用的)。
然而,async/await中的错误栈会指向错误所在的函数:

Async await
async可以看做多个异步操作,包装成的一个promise对象,使异步操作变得更加方便。

await后面紧跟的函数表示需要等待的结果

async返回一个promise对象,

async中必须等到await命令的promise对象执行完,才会执行then中的回调

与promise的区别

1.提案版本不同:Promise是ES6的新特性,async、await是ES7中的提案
2.代码简洁度:使用async函数可以让代码简洁很多;promise中,try/catch 不能处理 JSON.parse 的错误,因为它在Promise中。我们需要使用 .catch,这样错误处理代码非常冗余。

错误调试:Async/Await 让 try/catch 可以同时处理同步和异步错误。如果 Promise 连续调用,对于错误的处理是很麻烦的。你无法知道错误出在哪里。
不能在返回表达式的箭头函数中设置断点
如果你在.then代码块中设置断点,使用Step Over快捷键,调试器不会跳到下一个.then,因为它只会跳过异步代码。
使用await/async时,你不再需要那么多箭头函数,这样你就可以像调试同步代码一样跳过await语句。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值