ホーム>source

apiメソッドを呼び出し、応答が500サーバーエラーの場合、axiosインターセプター関数が起動し、 Promise.reject(error); を返します

ただし、そこで停止するため、「then」関数は実行されません。代わりに、「Uncaught」になります。

Uncaught (in promise) Error: Request failed with status code 500

インターセプターはAPI呼び出しを行った関数にエラーを返すべきではなく、そこでエラーを処理できますか?

コードは次のとおりです。

   //on submitting form
    onSubmit(data){
           //call api function
          api.sendPayment(data).then(response => {
                //this never runs
                 alert('response!')
                console.log(JSON.stringify(response))
            }    

    });

//Api function
sendPayment: (formData) => {
        return axios.post('/api/checkout', formData);
    },
//interceptor
axios.interceptors.response.use(response => {
    return response;
}, error => {
    //this executes the "uncaught" error instead of returning to the "then" function.
    return  Promise.reject(error);
});

あなたの答え
  • 解決した方法 # 1

    .catch を使用する必要があります 。エラーは .then でキャッチされません

    api.sendPayment(data).then(response => {
        //this never runs
            alert('response!')
        console.log(JSON.stringify(response))
    }).catch(err => {
        //Handle your error here
        console.log(err.response);
    })
    
    

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ python - カテゴリ内のタイトルによるフィルタリング(多対多)