首先说说两者的概念
Promise
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更正当和更弱小,简略地说,Promise好比容器,外面寄存着一些将来才会执行结束(异步)的事件的后果,而这些后果一旦生成是无奈扭转的
async await
async await也是异步编程的一种解决方案,他遵循的是Generator 函数的语法糖,他领有内置执行器,不须要额定的调用间接会主动执行并输入后果,它返回的是一个Promise对象。
两者的次要用法、语法就不赘述了,感兴趣的同学能够自行查阅 es6中文文档
两者的区别
Promise的呈现解决了传统callback函数导致的“地区回调”问题,但它的语法导致了它向纵向倒退行成了一个回调链,遇到简单的业务场景,这样的语法显然也是不美观的。而async await代码看起来会简洁些,使得异步代码看起来像同步代码,await的实质是能够提供等同于”同步成果“的期待异步返回能力的语法糖,只有这一句代码执行完,才会执行下一句。
async await与Promise一样,是非阻塞的。
async await是基于Promise实现的,能够说是改良版的Promise,它不能用于一般的回调函数。
简略来看,这两者除了语法糖不一样外,他们解决的问题、达到的成果是大同小异的,咱们能够在不同的利用场景,依据本人的爱好来抉择应用。