Heim > Artikel > Web-Frontend > Wie kann ich ein Abrufversprechen ablehnen und Fehler abfangen, wenn der Statuscode nicht in Ordnung ist?
Viele moderne JavaScript-Anwendungen verwenden die Fetch-API, um HTTP-Anfragen zu stellen. Die Fetch-API gibt ein Promise-Objekt zurück, das in ein Response-Objekt aufgelöst wird. Das Response-Objekt kann verwendet werden, um auf den Statuscode, die Header und den Text der Antwort zuzugreifen.
Manchmal antwortet ein Server mit einem HTTP-Statuscode, der auf einen Fehler hinweist. Beispielsweise könnte ein Server mit dem Statuscode 404 antworten, wenn eine angeforderte Ressource nicht gefunden wird. Standardmäßig wird ein Abrufversprechen nicht abgelehnt, wenn der Server mit einem Nicht-2xx-Statuscode antwortet.
Dies kann die Behandlung von Fehlern in Ihrem Code erschweren. Um dieses Problem zu beheben, können Sie die Funktion status() verwenden, um den Statuscode des Antwortobjekts zu überprüfen, bevor Sie das Versprechen auflösen oder ablehnen. Hier ist ein Beispiel, wie Sie die Funktion status() verwenden können, um ein Fetch Promise abzulehnen, wenn der Statuscode nicht OK ist:
function fetchVehicle(id) { return dispatch => { return dispatch({ type: 'FETCH_VEHICLE', payload: fetch(`http://swapi.co/api/vehicles/${id}/`) .then(status) .then(res => res.json()) .catch(error => { throw(error); }) }); }; } function status(res) { if (!res.ok) { return Promise.reject() } return res; }
Dieser Code lehnt das Fetch Promise ab, wenn der Statuscode des Antwortobjekts ist nicht in Ordnung. Sie können dann die Methode .catch() verwenden, um den Fehler zu behandeln.
Hier ist ein Beispiel, wie Sie die Methode .catch() verwenden können, um den Fehler zu behandeln:
fetchVehicle(1).catch(error => { console.log(error); });
Dies Der Code protokolliert den Fehler in der Konsole.
Das obige ist der detaillierte Inhalt vonWie kann ich ein Abrufversprechen ablehnen und Fehler abfangen, wenn der Statuscode nicht in Ordnung ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!