久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

vue axios請求成功卻進(jìn)入catch的原因分析

瀏覽:110日期:2022-11-27 09:44:38

問題:axios返回200狀態(tài)碼(即請求成功)卻走進(jìn)了catch里面

原因:

1.當(dāng)axios請求完成后走的時then的代碼塊,如果then代碼塊中存在錯誤代碼信息,這時就會進(jìn)入catch中拋出異常(注意:此時控制臺并不會報錯,因為錯誤被catch捕獲了

2.axios是異步發(fā)起,若發(fā)起后頁面刷新,那么就會丟失當(dāng)前進(jìn)程,導(dǎo)致接收不到。例如 form表單,點擊按鈕提交后,表單會刷新

補充知識:axios用catch的寫法與不使用catch有什么區(qū)別?

官網(wǎng)上的寫法:

axios.post(url, data) .then(response => { console.log(response); }) .catch(error => { console.log(error); })

公司項目的寫法:

axios.post(url, data) .then(response => { console.log(response); }, error => { console.log(error); })

之前一直沒有仔細(xì)研究過then和catch的寫法,事實上,這個不是 axios catch 的相關(guān) 而是關(guān)于 new Promise() 的then

阮一峰在 promise 文檔中有介紹。

一般來說,不要在then方法里面定義 Reject 狀態(tài)的回調(diào)函數(shù)(即then的第二個參數(shù)),總是使用catch方法。

// badpromise .then(function(data) { // success }, function(err) { // error });// goodpromise .then(function(data) { //cb // success }) .catch(function(err) { // error });

上面代碼中,第二種寫法要好于第一種寫法,理由是第二種寫法可以捕獲前面then方法執(zhí)行中的錯誤,也更接近同步的寫法(try/catch)。因此,建議總是使用catch方法,而不使用then方法的第二個參數(shù)。

公司的寫法無法catch第一個參數(shù)的異常。

這樣寫可能容易看懂一些:

axios.post(url, data) .then(response => { //處理邏輯 }, error => { console.log(’接口報錯’); }) .catch(error=>{ console.log(’處理邏輯出錯’); })

axios.post(url, data) .then(response => { //處理邏輯 }) .catch(error=>{ console.log(’接口或處理邏輯出錯’); })

以上這篇vue axios請求成功卻進(jìn)入catch的原因分析就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: IOS
相關(guān)文章:
主站蜘蛛池模板: 山东省| 随州市| 从化市| 五莲县| 右玉县| 宁都县| 丹阳市| 南陵县| 兴化市| 甘洛县| 神农架林区| 徐汇区| 楚雄市| 祁门县| 中江县| 高安市| 蓝田县| 武平县| 阳东县| 沂南县| 龙里县| 涟水县| 隆回县| 普兰县| 浮山县| 金坛市| 郧西县| 马龙县| 玉田县| 大兴区| 景东| 佛山市| 泰安市| 姜堰市| 库伦旗| 葵青区| 六枝特区| 清涧县| 集安市| 马龙县| 射阳县|