说说Promise和async/await 的区别?

语法:

  • Promise 是一种基于回调的异步处理方式,它使用 .then().catch() 方法来处理异步操作的结果和错误。
  • async/await 是一种更为直观和同步化的异步处理方式,它使用 asyncawait 关键字,使异步代码看起来更像同步代码。

可读性

  • async/await 更易读,因为它使用类似于传统同步代码的结构,使代码更加线性和清晰。
  • Promise 在处理多个嵌套的异步操作时,可能会导致回调地狱(Callback Hell),降低可读性。

错误处理

  • Promise 中,错误处理通常需要使用 .catch()try-catch 来捕获异步操作中的异常。
  • async/await 中,可以使用普通的 try-catch 结构来捕获异常,使错误处理更加自然。

多个异步操作的顺序执行

  • Promise 中,你可以使用 .then() 链式调用来处理多个异步操作的顺序执行,但代码可能变得复杂。
  • async/await 中,可以使用 await 来等待一个异步操作完成后再执行下一个操作,这使得顺序执行异步操作更加直观。

总结:

①Promise 是应用层的解决方案,它有一个规范,不同的语言也可以实现,它只能异步的处理错误,在js 里它本质上是一个对象。 ​ ②async-await 是语言层的解决方案,它可以说是 Promise的补充,可以让用户像编写同步代码一样编写异步代码,通过try-catch 可以同步地处理错误。 Promise 更多应用在函数封装中,async用在函数的使用中。 ​ ③Promise链式调用相当于一个新的回调地狱, 也不能统一处理异常。 Promise 本身是同步函数,多个不会等待。 ​ ④async-await用同步的写法使得可读性更强,同时方便 try-catch 捕获异常, async-await 有明确的前后关系,可读性好。

猜你喜欢

转载自blog.csdn.net/summer___cold/article/details/132757335