Wir haben folgenden Anruf an fetch
.Handle eine 500-Antwort mit dem Abruf api
Dies funktioniert, wenn wir eine Antwort von 200 erhalten, aber nichts auf der Konsole protokolliert, wenn wir eine Antwort von 500 erhalten. Wie gehen wir mit 500 um?
Wir haben folgenden Anruf an fetch
.Handle eine 500-Antwort mit dem Abruf api
Dies funktioniert, wenn wir eine Antwort von 200 erhalten, aber nichts auf der Konsole protokolliert, wenn wir eine Antwort von 500 erhalten. Wie gehen wir mit 500 um?
Kombination then
mit catch
funktioniert.
fetch('http://some-site.com/api/some.json')
.then(function(response) { // first then()
if(response.ok)
{
return response.text();
}
throw new Error('Something went wrong.');
})
.then(function(text) { // second then()
console.log('Request successful', text);
})
.catch(function(error) { // catch
log('Request failed', error)
});
fetch()
gibt ein Promise
ein Response
Objekt enthält. Die Promise
kann entweder erfüllt oder abgelehnt werden. Fulfillment läuft das erste then()
, gibt sein Versprechen zurück und lässt das zweite then()
laufen. Ablehnung wirft auf die erste then()
und springt auf die catch()
.
Dies wird wahrscheinlich nicht tun, was Sie wollen. Dies führt entweder zu einem falsch positiven Ergebnis (wenn der Server eine Textfehlerantwort auf einen 4xx-5xx-Status zurückgibt) oder das Extrahieren von Text schlägt fehl und protokolliert den Fehler des Aufrufs von "response.text()", was am meisten der Fall ist wahrscheinlich nicht hilfreich. Sie sollten stattdessen den Statuscode oder 'res.ok' explizit im ersten' then' überprüfen und entsprechend reagieren. Siehe [hier] (https://www.tjvantoll.com/2015/09/13/fetch-and-errors/). – neverfox
@neverfox Vielen Dank dafür. Aktualisiert. –
i überhaupt mit dem Rahmen bin nicht vertraut oder der api holen, aber ich fand dies: https: //gist.github .com/bryanschmied/14caed2015b9c54e70c3; fetch(). then(). catch (unk => conole.log (unk)); – AndreaBogazzi
Schöne Forschung. Das wird auch hier gezeigt: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch Danke. –