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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tatsächlich, es ist nicht möglich, mit axios jetzt. Die status-codes, die fällt in den Bereich der
2xx
nur, abgefangen werden können.then()
.Einen konventionellen Ansatz ist, um Fehler abzufangen, die in der
catch()
block wie unten:Anderen Ansatz abfangen von Anfragen oder Antworten, bevor Sie behandelt werden, dann oder fangen.
InformationsquelleAutor Plabon Dutta