是什么
都是处理异步请求的方式,promise是ES6提出的,async,await是ES8提出的,后者是前者的一个语法糖
相关性
async,await是基于promise实现的,二者都是非阻塞性的
区别
- async,await使得代码更简洁,更易读懂,promise是通过then,catch去捕获和处理成功和失败的结果,这种链式结构的写法容易造成代码重叠,不好维护,而async,await是通过try,catch去捕获和处理成功和失败的结果,更干净简洁,可读性高。
- async,await使得异步代码同步化, 前者,遇到await,就会等结果返回再执行下面的代码,如果promise返回reject,则整个async会中断,后面代码不执行。后者,promise中,.then方法返回,会出现请求还没有返回,就执行了后面的操作。