Axios Umgang mit Fehlern

Ich versuche zu verstehen javascript-verspricht besser mit Axios. Was ich vorgeben ist, um alle Fehler in Request.js und nur, rufen Sie die Anfrage-Funktion von überall ohne catch().

In diesem Beispiel die Antwort auf die Anfrage wird 400 mit einer error-Nachricht im JSON-Format.

Dies ist der Fehler, ich bin immer:

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

Die einzige Lösung, die ich finde, ist das hinzufügen .catch(() => {}) im Somewhere.js aber ich versuche zu vermeiden, dass zu tun. Ist es möglich?

Hier der code:

Request.js

export function request(method, uri, body, headers) {
  let config = {
    method: method.toLowerCase(),
    url: uri,
    baseURL: API_URL,
    headers: { 'Authorization': 'Bearer ' + getToken() },
    validateStatus: function (status) {
      return status >= 200 && status < 400
    }
  }

  ...

  return axios(config).then(
    function (response) {
      return response.data
    }
  ).catch(
    function (error) {
      console.log('Show error notification!')
      return Promise.reject(error)
    }
  )
}

Somewhere.js

export default class Somewhere extends React.Component {

  ...

  callSomeRequest() {
    request('DELETE', '/some/request').then(
      () => {
        console.log('Request successful!')
      }
    )
  }

  ...

}
Wollen Sie brechen das Versprechen-Kette?
Sicher nicht. Nicht, dass mich stoppen müssen, verwenden Sie zu fangen, wenn ich rufen Sie die Anfrage-Funktion?
Ist ein erfolgloser status code logischerweise einen außergewöhnlichen Status in Ihrer Anwendung? Wie würden Sie erwarten, dass aufrufenden code, um darauf zu reagieren?
Wenn Sie uns Fehler auf der Erfolgsspur, Sie, aller Wahrscheinlichkeit nach, müssen für Sie zu testen, um auf den Zweig an einem höheren Niveau. Ich würde sagen, dass erlauben Erfolg zu Erfolg und Fehler und Fehler, und .catch() entsprechend.

InformationsquelleAutor Swift-R | 2018-04-22

Schreibe einen Kommentar