Abruf: Steuerung der Versprechensablehnung basierend auf dem HTTP-Statuscode
Im Bereich des Abrufs werden Versprechen normalerweise nur abgelehnt, wenn Netzwerkfehler auftreten. In Szenarien, in denen 4xx- oder 5xx-HTTP-Statuscodes zurückgegeben werden, wird das Versprechen jedoch nicht standardmäßig abgelehnt.
Problem:
In Ihrem bereitgestellten Code versuchen Sie dies Das Versprechen abfangen und ablehnen, wenn der HTTP-Antwortstatus einen Fehler anzeigt. Das Versprechen wird jedoch nicht wie erwartet abgelehnt.
Grund:
Abrufversprechen werden nur dann mit einem TypeError abgelehnt, wenn ein Netzwerkfehler auftritt. Da 4xx- und 5xx-Antworten keine Netzwerkfehler sind, gibt es nichts zu erkennen. Um das Versprechen manuell abzulehnen, müssen Sie selbst einen Fehler auslösen.
Lösung:
Um dieses Problem zu beheben und das Versprechen basierend auf dem HTTP-Status abzulehnen, können Sie Ihr Versprechen ändern Code wie folgt:
import 'whatwg-fetch'; function fetchVehicle(id) { return dispatch => { return dispatch({ type: 'FETCH_VEHICLE', payload: fetch(`http://swapi.co/api/vehicles/${id}/`) .then(res => { if (!res.ok) { const error = new Error('HTTP Error: ' + res.status); throw error; // Throwing the error here will cause fetch to reject the promise } return res; }) .then(res => res.json()) .catch(error => { throw error; }) }); }; }
Durch die Einführung der Fehlerbehandlungslogik innerhalb des Abrufversprechens können Sie das Versprechen jetzt manuell ablehnen, wenn der HTTP-Antwortstatus eine nicht erfolgreiche Bedingung anzeigt. Dadurch können Sie den Fehler im Catch-Block Ihrer Redux-Middleware erfassen und entsprechend behandeln.
Das obige ist der detaillierte Inhalt vonWie kann ich Abrufversprechen basierend auf HTTP-Statuscodes manuell ablehnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!