前文說到堂湖,使用promise和await處理正常情況下的異步邏輯闲先。但是實(shí)際情況中状土,異常是一個(gè)被著重關(guān)注的點(diǎn),異常響應(yīng)伺糠、埋點(diǎn)上報(bào)蒙谓、重試策略都離不開異常判斷。如果是在promise中退盯,一般是通過catch方法捕獲異常彼乌。但是await默認(rèn)是拋出異常的,所以普通的寫法會(huì)類似這樣渊迁,在await外面包一層try catch嵌套:
對(duì)于嵌套慰照,我個(gè)人的觀點(diǎn)是越少越好,詳細(xì)解釋在之前寫過一篇http://www.reibang.com/p/01f5a662d908琉朽。
因此我會(huì)這樣去處理promise函數(shù)毒租,將error回調(diào)也通過resolve的形式返回
這樣做的好處是我在處理異步結(jié)果的時(shí)候,代碼就變成了
正常邏輯依然運(yùn)行在無嵌套的情況箱叁,而相對(duì)次要一些的異常邏輯則需要包一層if判斷墅垮。
看到這里不點(diǎn)個(gè)贊嗎?