Heim > Web-Frontend > js-Tutorial > Wie kann ich Abrufversprechen basierend auf HTTP-Statuscodes manuell ablehnen?

Wie kann ich Abrufversprechen basierend auf HTTP-Statuscodes manuell ablehnen?

DDD
Freigeben: 2024-11-10 01:21:02
Original
535 Leute haben es durchsucht

How Can I Manually Reject Fetch Promises Based on HTTP Status Codes?

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;
                })
            });
    };
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage