mit einer fetch-Anweisung innerhalb einer anderen fetch in javascript
Möchte ich, um eine api und nach diesem Anruf noch einen. Ist es klug mit einem code, wie dies in javascript?
fetch(url, {
method: 'get',
}).then(function(response) {
response.json().then(function(data) {
fetch(anotherUrl).then(function(response) {
return response.json();
}).catch(function() {
console.log("Booo");
});
});
})
.catch(function(error) {
console.log('Request failed', error)
});
- Was wollen Sie erreichen? Hat Sie den zweiten Anruf hängt von response-Daten vom ersten Aufruf?
- ja,der zweite Anruf hängen von response-Daten aus dem ersten Anruf.
- Alternativ können Sie auf der Kette der Aufrufe mit
.then()
- Wenn Sie nicht
return
von jedem Versprechen (then
) callback, Ihre Letzte.catch()
wird nicht funktionieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Holen die eine Zusage zurückgibt, und Sie können Kette mehrerer verspricht, und verwenden Sie das Ergebnis der 1. Anfrage in die 2. Anfrage:
Verwendet das Beispiel die SpaceX-API, um die Informationen von der neuesten starten, finden die Rakete, die id, und Holen die Rakete info.
JS:
CSS:
Es ist nicht ein Problem mit der Verschachtelung
fetch()
Anrufe. Es hängt davon ab, was Sie versuchen, zu erreichen, durch die Verschachtelung der Aufrufe.Können Sie alternativ auch
.then()
auf die Kette nennt. Siehe auch Wie die Struktur der geschachtelten VersprichtDies ist eine häufige Frage, die Leute zu Schaden kommen, indem beim starten mit dem Versprechen, mich eingeschlossen, als ich begann. Aber zuerst...
Es ist großartig, dass Sie versuchen, verwenden Sie die neue Fetch API, aber wenn ich du wäre würde ich die Verwendung eines XMLHttpRequest-Implementierung für jetzt, wie jQuery, AJAX-oder Backbone-die überschriebene Implementierung der jQuery -
.ajax()
, wenn Sie bereits mit diesen Bibliotheken. Der Grund ist, weil der Fetch API ist noch so neu, und daher experimentell zu diesem Zeitpunkt.Mit, die sagte, die Leute auf jeden Fall verwenden, aber ich nicht in meinen eigenen Produktions-code, bis es aus dem "experimental" - status.
Wenn Sie sich entscheiden, weiterhin mit
fetch
gibt es eine polyfill zur Verfügung. HINWEIS: Sie haben zu springen durch zusätzliche Reifen zu bekommen, die Fehlerbehandlung korrekt funktioniert, und um Empfang von cookies vom server. Wenn Sie bereits das laden von jQuery, oder mit Rückgrat, nur stick mit diejenigen, die für jetzt nicht ganz schrecklich, sowieso.Jetzt auf code:
Du willst ein Wohnung Struktur, was Sie ' re fehlt den Punkt der Verspricht. Es ist nicht klug, nest verspricht, unbedingt, da Verspricht lösen, was geschachtelte async-Callback (Rückruf Hölle) nicht konnte.
Sparen Sie sich Zeit und Energie und produzieren weniger buggy code, indem Sie einfach mit einem besser lesbaren code-Struktur. Es ist nicht alles, aber es ist Teil des Spiels, so zu sprechen.