エラーの説明: データを取得するための要求の送信は成功し、ネットワークは応答データを返しましたが、このエラーを報告し続けます:
捕まえられなかった (約束) 一晩中探しても間違いは見つからなかった
リクエストのパラメータとメソッドに問題はありませんが、調査の結果、レスポンスのインターセプタの返却に問題があることが判明しました。
私のこれまでの書き方は、axios公式サイトのリクエスト・レスポンス・インターセプターの書き方をベースに、以下のように論理的な判断を直接加えています。
// 応答インターセプターを追加する instance.interceptors.response.use
(
function (response) { // バックグラウンド合意、応答は成功しましたが、コードは 10000 ではありません。これはビジネス ロジックの失敗です if (response.data?.code !== 10000) { showToast(response.data?.message || 'ビジネスの失敗') return response.data?.message // ここで return は間違っています... promise を返す必要があります } return Promise.reject(response.data ) // ビジネスの成功に必要 取得したデータを返す }, 関数 (エラー) { // 401 を処理し、ユーザー情報を削除し、ログイン ページにジャンプ + 終了時にアドレスを取得する if (error.response.status === 401) { const store = useStoreUser( ) store.delUser() router.push({ path: '/login',
クエリ: { returnUrl: router.currentRoute.value.fullPath }
})
}
return Promise.reject(error)
}
)
しかし、事業の失敗を判断する場合、ここでの返品の内容は間違っています。. .
ビジネスの失敗は、メッセージ情報プロンプトの代わりにプロミスを返す必要があります
ビジネスの成功は、取得したデータを返す必要があります
これらの 2 つの場所が書かれたとき、ロジックは明確ではなく、混乱していました。. . 自分に騙されてまた一日
変更されたコードは次のとおりです。
// 応答インターセプターを追加する instance.interceptors.response.use
(
function (response) { // バックグラウンド合意、応答は成功しましたが、コードは 10000 ではありません。これはビジネス ロジックの失敗です if (response.data?.code !== 10000) { showToast(response.data?.message || 'ビジネスの失敗') return Promise.reject(response.data) }
return response.data
},
function (error) { // 401 を処理してユーザー情報を削除し、ログイン ページにジャンプ + 終了時にアドレスを取得 if (error.response.status === 401) { const store = useStoreUser() store. delUser() router.push({ path: '/login', query: { returnUrl: router.currentRoute.value.fullPath } }) } return Promise.reject(error) } )