什么是Asyncawait,和Promise有什么区别
Async/await:是⼀个⽤同步思维解决异步问题的⽅案
1.会⾃动将常规函数转换成Promise,返回值也是⼀个Promise对象
2.只有async函数内部的异步操作执⾏完,才会执⾏then⽅法指定的回调函数
3.异步函数内部可以使⽤await
4.await 放置在Promise调⽤之前,await 强制后⾯点代码等待,直到Promise对象resolve,得到resolve的值作为await表达式的运算结果
5.await只能在async函数内部使⽤,⽤在普通函数⾥就会报错
和Promise相⽐较
相同点:
为了解决异步流程问题,promise是约定,⽽async更优雅
区别:
1.Promise是ES6,⽽async是ES7
2.Promise原来有规范的意义,Promise a,b,c,d 等规范,最终确定的是Promise a+ 规范
3.Promise链式操作,⾃⼰catch异常。async则要在函数内catch,好在现在catch成本较低
4.Promise有很多并⾏神器,⽐如Promise.all\Promise.race等。这些是async没法搞定的
5.Promise是显式的异步,⽽ Async/await 让你的代码看起来是同步的,你依然需要注意异步
6.Promise即使不⽀持es6,你依然可以⽤promise的库或polyfil,⽽async就很难做,当然也不是不能,成本会⾼很多
7.async functions 和Array.forEach等结合,很多tc39提案都在路上或者已经实现,处于上升期,⽽promise也就那样了
总结:Async/awati 简单好⽤,是⼤势,肯定得学,⽽async的使⽤绕不开Promise,所以Promise是必会的。
>await和async使用方法
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论