国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

不要一直使用try-catch啦!三種async/await錯誤捕獲方式

開發 前端
async + await? 可以讓 異步的操作擁有同步的寫法。所以在日常開發中,通過 async + await 來處理異步編程(比如:接口請求)是非常常見的一種方案。

Hello,大家好,我是 Sunday。

async + await 可以讓 異步的操作擁有同步的寫法。所以在日常開發中,通過 async + await 來處理異步編程(比如:接口請求)是非常常見的一種方案。

但是,只要是異步操作,那么就會存在出現 錯誤 的可能。當 promise 出現錯誤時,我們可以直接通過 .catch 的方式進行捕獲,那么 async + await 應該怎么做呢?每次都使用 try-catch 進行完整的包裹嗎?有沒有更好地方案呢?

今天這篇文章,咱們就來說下這個問題~

01:使用 try/catch 進行捕獲

function getUserInfo() {
     return new Promise((resolve, reject) => {
         setTimeout(() => {
             reject('請求出現錯誤')
         }, 1000)
     })
}

async function loggedIn() {
     try {
         // 執行中斷
         let userInfo = await getUserInfo()
         console.log('不會繼續執行')
     } catch(e) {
         console.log(e)
     }
}
loggedIn()

上面的代碼在執行時,會通過 try-catch 捕獲到“請求異常”并中斷執行getUserInfo。這也是日常開發中常見處理方式。

但是如果我們存在多次的請求,就必須要通過多次的 try-catch 進行捕獲,特別是在請求需要具備連續性的時候:

async function loggedIn() {
     try {
         let userInfo = await getUserInfo()
         console.log('不會繼續執行')
         let pageInfo = await getPageInfo(userInfo?.userId)
     } catch(e) {
         console.warn(e)
     }
}
loggedIn()

這樣的處理,在當前場景下并沒有什么問題,但是如果每一個接口的請求都這么進行調用,那么就會顯得冗余了。所以,我們就可以延伸出一些其他的處理方案。

02:直接捕獲

function getUserInfo() {
     return new Promise((resolve, reject) => {
         setTimeout(() => {
             reject('請求出現錯誤')
         }, 1000)
     })
}

async function loggedIn() {
     let userInfo = await getUserInfo().catch(e => console.log(e))
     console.log('程序會繼續執行')
     if (!userInfo) return
     let pageInfo = await getPageInfo(userInfo?.userId)
}
loggedIn()

在上面的代碼中,我們通過 catch捕獲了異常,但程序會繼續執行,所以我們只需要在后續進行 if 判斷,從而完成連續的邏輯。

如果你不希望程序繼續執行,那么可以按照下面的方式進行處理

function getUserInfo() {
     return new Promise((resolve, reject) => {
         setTimeout(() => {
             reject('請求出現錯誤')
         }, 1000)
     })
}

async function loggedIn() {
     let userInfo = await getUserInfo().catch(e => {
         console.log(e)
         return Promise.reject(e)
     })
     console.log('程序不會繼續執行')
     let pageInfo = await getPageInfo(userInfo?.userId)
}
loggedIn()

這種方式會執行通過 在catch塊中的Promise.reject(e)來中斷執行。

如何選擇?

1、如果錯誤不需要中斷程序執行,那么可以使用如下方式

let userInfo = await getUserInfo().catch(e => console.log(e))
if (!userInfo) return

2、如果發生錯誤時需要中斷,并且通過控制臺明確一個統一的錯誤

try {
   let userInfo = await getUserInfo()
   console.log('不會繼續執行')
   let pageInfo = await getPageInfo(userInfo?.userId)
} catch(e) {
   console.warn(e)
}

3、如果發生錯誤時需要中斷,但是不需要控制臺顯示統一的錯誤

let userInfo = await getUserInfo().catch(e => {
   console.log(e)
   return Promise.reject(e)
})
console.log('程序不會繼續執行')
let pageInfo = await getPageInfo(userInfo?.userId)
責任編輯:武曉燕 來源: 程序員Sunday
相關推薦

2017-11-02 15:26:10

JavaScriptasync錯誤

2025-06-25 08:15:00

JavaScrip異步編程代碼

2020-09-27 07:48:40

不用try catch

2025-04-29 08:05:00

JavaScript錯誤處理開發

2009-07-21 14:30:38

Scalatry-catch

2024-05-24 08:59:15

2024-06-25 10:37:11

2025-01-16 12:00:00

try-catchfor循環

2024-12-30 08:22:35

2024-11-04 08:20:00

try-catch編程

2024-05-07 07:58:47

C#程序類型

2024-11-11 11:33:57

2024-03-05 18:15:28

AsyncAwait前端

2021-01-05 07:54:55

事項trycatch

2025-02-12 12:00:00

前端try-catchJavaScrip

2020-05-29 08:14:49

代碼Try-Catch程序員

2021-11-26 11:07:14

cowsay命令Linux

2024-12-02 11:07:24

Java代碼機制

2020-10-14 12:10:22

Javatry-catch代碼

2022-01-25 12:14:39

面試try-catch代碼
點贊
收藏

51CTO技術棧公眾號

色综合中文字幕| 四虎影视av| 日韩精品一区二区三区中文字幕 | 欧美不卡1区2区3区| 成人性生交大片免费看网站| 亚洲美女视频在线观看| 天堂av在线中文| 午夜精品久久99蜜桃的功能介绍| 欧美激情精品久久久久久大尺度| 久热久精久品这里在线观看| 成熟亚洲日本毛茸茸凸凹| 国产欧美日韩综合精品二区| 亚洲免费福利一区| 久久综合伊人77777| av大片在线| 精品久久久一区| 日本中文字幕久久看| 青青草手机在线| 在线免费观看羞羞视频一区二区| 丁香桃色午夜亚洲一区二区三区| 精品麻豆剧传媒av国产九九九| 奇米影视亚洲色图| 欧美影院一区二区| 亚州av电影免费在线观看| 色哟哟精品一区| 亚洲啪啪aⅴ一区二区三区9色| 99国产精品国产精品久久| 久久草视频在线看| 国产欧美一区二区精品久久久| 精品国产欧美一区二区五十路| 国产精品一区二区三区四区在线观看 | 老司机午夜精品99久久| 日日夜夜精品网站| 日韩中文字幕不卡| www日韩视频| 日韩欧美不卡在线观看视频| 99re6在线视频| 国产午夜精品福利| 国产av无码专区亚洲精品| 丝袜亚洲另类欧美| 亚洲一区二区三区乱码aⅴ| 一区二区三区四区高清视频 | 在线成人激情黄色| 99久久99久久精品免费看蜜桃| 亚洲精品成人无限看| 国产亚洲一区二区三区不卡| 精品国产鲁一鲁****| 97香蕉久久| 亚洲大尺度美女在线| 亚洲bt欧美bt精品777| 性欧美18一19内谢| 欧美va天堂在线| www.日韩不卡电影av| 91这里只有精品| 国产精品日日摸夜夜摸av| 久久伊人一区| 亚洲一区导航| 99在线视频精品| 国内不卡一区二区三区| 日本一本不卡| 国产伦精品一区二区三区视频黑人 | 国产一区丝袜| 性史性dvd影片农村毛片| 日韩精品久久一区二区三区| 中文字幕日韩欧美在线视频| 亚洲午夜精品久久久久久久久| 老司机精品导航| 日韩欧美在线网址| 国产精品18hdxxxⅹ在线| 看女生喷水的网站在线观看| 777视频在线| 亚洲欧美日韩综合一区| 欧美一区二区三区成人久久片| 久久久久成人网| 亚洲全黄一级网站| 久久久久国色av免费看影院| 老司机凹凸av亚洲导航| 久久久神马电影| 国产成人av电影在线| 97久久天天综合色天天综合色hd| 极品中文字幕一区| 国产美女高潮久久白浆| 午夜激情一区| 久久综合九色综合久99| 国产精品久久天天影视| 国产呦系列欧美呦日韩呦| 久久av综合| 精品国产伦一区二区三区观看体验| 加勒比日本影视| 中文字幕制服丝袜一区二区三区 | 亚洲欧美在线一区二区| ccyy激情综合| 日本免费一二区| 国产精品久久久久影院日本| 亚洲超碰精品一区二区| 欧美一级网站| 有码在线播放| 日韩精品在线免费播放| 九色成人搞黄网站| 久久精品亚洲热| 亚洲精品影视| 芒果视频成人app| 曰本人一级毛片免费完整视频| 色视频一区二区三区| 18久久久久久| 日韩精品电影网| 一区二区欧美在线观看| 黄色手机在线视频| 日韩极品在线观看| 亚洲欧洲日韩精品在线| 黄色免费视频大全| 国产精品视频久久| 亚洲三级在线播放| 精品123区| 深夜福利视频在线免费观看| 亚洲国产精品精华素| 视频一区欧美| 国产美女视频一区| 成人mm视频在线观看| 久久综合久久综合这里只有精品| 久久久精品蜜桃| 国产视频二区在线观看| 久久777国产线看观看精品| 亚洲欧美韩国综合色| av日韩久久| a篇片在线观看网站| 天堂在线观看一卡二卡三卡四卡| 在线观看免费91| 亚洲xxx视频| 国产日本亚洲| 亚洲japanese制服美女| 成人美女免费网站视频| 亚洲在线免费观看| 秋霞毛片久久久久久久久| 做爰高潮hd色即是空| 国产高清www| 日本私人网站在线观看| av在线免费网站| 2021天堂中文幕一二区在线观| 精品91久久| 91成人在线| 清纯唯美综合亚洲| 影音先锋亚洲一区| 国产一区二区三区的电影 | 日韩国产小视频| 精品中文字幕久久久久久| 亚洲国产精品精华液2区45| 国产成人高清| 欧美日韩在线精品一区二区三区激情综合| 免费无遮挡无码永久视频| 国产精品久久久久9999| 久久久精品三级| 一本色道久久88综合日韩精品| 久久精品综合| 成人欧美亚洲| 成人免费小视频| 国产精品狼人久久影院观看方式| 麻豆精品少妇| 三区四区在线视频| 激情小说综合区| 精品久久久久久久久久ntr影视| 女生影院久久| 999精品视频在线观看| 久久国内精品| 香蕉视频一区| 日韩激情综合| 免费观看亚洲| 一本一道波多野毛片中文在线| 国内精品久久久久国产| 国产区精品在线观看| 亚洲三级在线看| 不卡视频在线| 91香蕉视频污版| 国产黄视频在线观看| 国产精品久久久久91| 亚洲国产精品久久| 亚洲曰韩产成在线| 成人免费av在线| 亚洲欧美日韩一区在线观看| 欧美aa视频| 依依成人综合视频| 韩国亚洲精品| 网友自拍区视频精品| 999精品网| 亚洲最大免费| 亚洲欧洲中文| 91久久久在线| 欧美理论电影在线| 免费视频一区| www.欧美视频| 国产二区三区四区| 91精品视频在线看| 欧美tickling网站挠脚心| 9人人澡人人爽人人精品| 免费国产自久久久久三四区久久| 亚洲美女区一区| 久久视频国产| √新版天堂资源在线资源| 国产精品亚洲天堂| 欧美精品激情视频|