javascript异步error
2022-05-19
次访问
本文主要总结javascript异步error的抛出和捕获。
首先我们有一个耗时的操作wait:
1 | const wait = (ms) => { |
有一个函数foo
调用了上面的wait
:
1 | const foo = async () => { |
async函数foo
发生异常的话,可以通过throw
一个Error
来抛出:
1 | const foo = async () => { |
或者返回一个Promise.reject
,不过throw error
的方式更常用。
1 | const foo = async () => { |
foo
发生异常后,可以通过catch
来捕获,这样就不会报Uncaught
错误。
1 | const bar = async () => { |
因为foo
是一个async
函数,返回的是一个Promise
,所以可以像Promise
捕获异常一样,直接在函数foo
后面跟catch
。
或者用try-catch
来捕获:
1 | const bar = async () => { |
对于异步函数,比如上面的foo
,尽量在执行的时候用await
,可以避免很多问题。比如用try-catch
捕获异常时,如果没有await
,就捕获不到:
1 | const bar = async () => { |
上面这些操作基本就能捕获到异常,然后做一些异常处理逻辑,比如提示操作失败,隐藏处理中的提示等等。
编码时注意对异步逻辑的处理,最后就都能通过上面的方式捕获异常,更复杂的问题,可以试试Promise.all
。