前文说到,使用promise和await处理正常情况下的异步逻辑。但是实际情况中,异常是一个被着重关注的点,异常响应、埋点上报、重试策略都离不开异常判断。如果是在promise中,一般是通过catch方法捕获异常。但是await默认是抛出异常的,所以普通的写法会类似这样,在await外面包一层try catch嵌套:
对于嵌套,我个人的观点是越少越好,详细解释在之前写过一篇https://www.jianshu.com/p/01f5a662d908。
因此我会这样去处理promise函数,将error回调也通过resolve的形式返回
这样做的好处是我在处理异步结果的时候,代码就变成了
正常逻辑依然运行在无嵌套的情况,而相对次要一些的异常逻辑则需要包一层if判断。
看到这里不点个赞吗?