前端Uncaught (in promise) 的解決方法及原因


問題:在Vue項目中使用axios調用一個第三方的接口時,前端無法獲取到接口返回值,檢查控制台Network發現接口請求已經正常發出並且有數據返回,但是控制台Console報了這么一個錯誤

 

 上圖可以看到接口請求正常響應並有返回,控制台卻一直報錯 Uncaught (in promise) 

排查一番之后發現,是接口響應攔截器里面的問題,原本封裝好的請求方法里面response.data.code == 0才算請求成功,因為我們自己這邊的接口請求成功時響應的code值為0,但是今天訪問的是第三方的接口,這個接口請求成功時返回的code值為200,從上圖可看出,所以這個請求的響應被攔截掉了,從而Promise.reject(rejection)報錯。

解決辦法:修改攔截器里面的判斷,將code為200也視為成功(這里根據實際接口返回做修改)

axios.interceptors.reponse.use(res => {
  // 請求成功對響應數據做處理,此處返回的數據是axios.then(res)中接收的數據
  if (res.code ==0 || res.code == 200) {
     // code值為 0 或 200 時視為成功
     return Promise.resolve(res)
  }
  return Promise.reject(res)
}, err => {
    // 在請求錯誤時要做的事兒
    ...
    // 此處返回的數據是axios.catch(err)中接收的數據
    return Promise.reject(err)
})

修改完之后,前端就能正常拿到接口的返回值了。

以上方法可供參考,可能還有其他造成這個報錯的原因


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM