Fetch: lehnen Sie Versprechen und den Fehler abzufangen wenn der status nicht OK ist?

Hier ist, was ich haben möchte:

import 'whatwg-fetch';

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;
}

EDIT: Das Versprechen, nicht wieder abgewiesen werden, das ist, was ich versuche, herauszufinden.

Ich bin mit diesem Holen polyfill in Redux mit redux-promise-middleware.

  • Sie werfen eine Ausnahme in catch aber nicht catch es.
  • Es geht um die catch (die fängt alle Ablehnungen in der ganzen Kette verbunden ist), aber die catch Rückruf nicht nichts Anfassen - nur rethrows der Fehler. Ersetzen Sie die throw mit einem console.error oder so.
  • Der browser friert ein? Das definitiv, sollte nicht passieren.
  • Danke Jungs, ich bin ein bisschen neu, das einfrieren wurde durch etwas anderes verursacht. Ich denke, das ist ein Problem für mich, denn die polyfill behandelt einen 404 als eine erfolgreiche Antwort. Ich habe ein wenig Mühe die Ablehnung der Versprechen, sobald ich herausfinden, dass es in Ordnung sein sollte.
Schreibe einen Kommentar