promise 和 async await区别

2020-09-29  本文已影响0人  黄黄黄大帅
Promise

Promise 是异步编程的一种解决方案,比传统的解决方案8i——回调函数和事件——更合理和更强大,简单地说,Promise好比容器,里面存放着一些未来才会执行完毕(异步)的事件的结果,而这些结果一旦生成是无法改变的

async await

async await也是异步编程的一种解决方案,他遵循的是Generator 函数的语法糖,他拥有内置执行器,不需要额外的调用直接会自动执行并输出结果,它返回的是一个Promise对象。
await函数不能单独使用,而且async函数返回的是一个Promise对象,可以使用then函数添加回调函数。当函数执行的时候,一旦遇到await函数就会先返回一个Promise对象,等到异步操作完成,再去执行后面的语句。如果 await 后面的异步操作出错,那么等同于 async 函数返回的 Promise 对象被 reject

区别

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

  1. 错误调试:Async/Await 让 try/catch 可以同时处理同步和异步错误。如果 Promise 连续调用,对于错误的处理是很麻烦的。你无法知道错误出在哪里。
上一篇 下一篇

猜你喜欢

热点阅读