async await捕获错误

lxf2023-05-03 22:35:01
摘要

asyncawait中添加错误处理个人认为是有必要的,下面这篇文章主要给大家介绍了关于await/async无法捕获与处理错误信息的解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

目录
  • 前言
  • 同步和异步
  • 异步任务所存在的问题
  • Promise如何解决回调地狱
  • async/await,回调地狱的最终方案
  • async/await错误处理方案
    • 第一种,手动添加啊try{}catch{}进行捕获
    • 第二种,使用await-to-js
  • 最后
    • 总结

      前言

      如果你对同步任务/异步任务/回到地狱/promise概念/async-await的作用不是很了解的话,或许需要看一下以下简单的介绍。

      如果都了解则可以直接点击侧边栏跳到下面看await无法处理错误信息的解决方案。

      同步和异步

      javascript是一个单线程的语言。因为是单线程。所以这直接导致了线程阻塞的问题,在前一个任务完成以前,后面所有的任务都无法执行。因为这个问题。所以javascript有了异步任务的概念。

      javascript把其中的任务分为两部分,一种是同步任务,一种是异步任务,一些可能造成阻塞的任务归为异步任务,并将异步任务放到所有的同步任务之后去执行,以解决阻塞问题。

      常见的异步任务有

      • settimeout/setInterval
      • Promise的then函数
      • XMLHttpRequest(http请求也就是ajax

      异步任务解决了执行堵塞的问题,同时也存在一些问题(如下)。

      异步任务所存在的问题

      异步任务需要回调来处理任务结束以后的一些动作。在一些特殊场景下,有些异步任务需要依赖于其他异步任务的回调。这就需要将需要依赖的异步任务写到被依赖的异步任务的回调中。

      这是一种解决依赖异步依赖的方案,虽然可行,但不可读。 总会出现依赖层级较多的情况,大量的层级会让这个功能变得非常晦涩。可读性极差。如下