async/await和promise的区别

两者都是用来处理异步回调问题的。而async/await能将异步处理的像同步一般。

那么async/await相比于promise有什么优点呢?

  1. 简洁。前者不需要写.then,不需要给传入resolve和reject的匿名函数,也不需要定义data变量,节约了代码,也提升了可读性。

  2. 错误处理。前者可以直接通过try...catch...进行处理,而后者的错误不能被try...catch...所捕获,只能通过.catch,很麻烦。

  3. 条件语句处理。二者都可以通过条件语句处理,但是后者在条件语句中,又要进行.then、return等语句,嵌套很深。

  4. 中间值。通常会有这样的场景:需要在拿到第一次异步处理结果,调用第二次异步处理函数;第二次异步处理的结果,要和第一次的结果一起传入第三次处理函数中。这在promise中又需要层层嵌套,而async/await可以依次拿到数据处理,很简洁。

  5. 错误链。在promise中如果经历了多次.then,并在其中抛出了错误,则返回的错误栈不会明确的返回错误的位置;然而async/await中会明确指出错误的函数。

  6. 调试。promise中在.then中设置断点,不会依次经过之后的.then,而是跳出到同步代码。

posted @ 2020-10-28 10:49  ashen1999  阅读(542)  评论(0编辑  收藏  举报