Ich verwende die native Abrufbibliothek wie angegeben here. Es scheint, dass jedes Mal, wenn eine andere Antwort als 200 OK zurückgegeben wird, eine Ausnahme mit der Zeichenfolgenantwort Uncaught (in promise) TypeError: Failed to fetch
ausgelöst wird.Erfassen anderer Antworten als 200 OK ab Abruf
Gab es eine Möglichkeit, bestimmte HTTP-Antwortcodes abzufangen und zu verzweigen und trotzdem die Antwortdaten anzuzeigen? Zum Beispiel eine 401 Antwort?
Ich habe meinen Anfragecode angehängt, den ich als Wrapper für Fetch verwende.
static request(url, data) {
let headers = {
"Authorization": window.localStorage.getItem("Authorization"),
"Content-Type": "application/json"
};
let options = {
method: "GET",
headers: headers,
mode: "no-cors",
cache: "no-cache",
};
if (data) {
options = {
method: "POST",
headers: headers,
mode: "no-cors",
cache: "no-cache",
body: JSON.stringify(data)
}
}
return new Promise(async (resolve, reject) => {
try {
let response = await fetch(url, options);
let jsonResponse = await response.json();
return resolve(jsonResponse);
} catch (error) {
// hashHistory.push("/login");
return reject(error);
}
})
}
verwenden Im Allgemeinen Sie nie ein 'Promise' Objekt selbst konstruieren müssen. Sie können 'fetch' direkt in Ihrer' request' Funktion erwarten. – Dai
[Übergeben Sie niemals eine Async-Funktion an "new Promise"!] (Https://stackoverflow.com/questions/43083696/cant-throw-error-from-within-a-async-promise-executo-function/ 43083793 # 43083793) – Bergi
Ich denke, das ist die Hauptquelle des Problems! Danke für die Überprüfung des Codes –