Angular2 Versprechen : Wie die Antwort vom Http-Get
Ich bin neu in Eckig und folgende dieses tutorial um die Grundlagen zu lernen. Betrachten Sie die folgende http-get-Aufruf.
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json().data as Hero[])
.catch(this.handleError);
}
Nach der Umstellung des beobachtbaren, um ein Versprechen, wie kann ich die wirklich nutzen, die Reaktion(z.B. in Konsole protokollieren, zu analysieren und auf eine response-element.. etc) mit einer Funktion innerhalb der then () - Klausel?
Ich habe versucht, die folgenden, obwohl es protokolliert die Antwort, kann ich nicht wirklich Zugriff auf alles in das response-Objekt.
this.http.get(url, {headers : this.headers})
.toPromise()
.then(function(res) {
console.log(res);
return res => res.json().data as Query[];
})
.catch(this.handleError);
Jede Hilfe wäre sehr geschätzt werden. Danke.
Was tun Sie needto Zugang aus der Antwort könnte man es beschreiben im detail. Und ich würde vorschlagen, zu verwenden Observablen statt Versprechungen. Observablen werden kann, abgebrochen etc. Haben Sie einen Blick auf diese post, und entscheiden Sie dann: stackoverflow.com/questions/37364973/...
danke. nehmen wir an, dieser ruft einen web-service, gibt ein User-Objekt, und ich will zu Holen ein name aus der Antwort.
was hast du in der
danke. nehmen wir an, dieser ruft einen web-service, gibt ein User-Objekt, und ich will zu Holen ein name aus der Antwort.
was hast du in der
response
können Sie fügen Sie, dass in der Frage?
InformationsquelleAutor Maddy | 2017-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angular2 verwenden RXjs beobachtbaren statt Versprechungen. Es funktioniert wie folgt.
erstellen httpService wie folgt.
httpService.ts
Nun einfach nutzen Sie diesen service Ihrer Komponenten/Richtlinien, wie unten:
componenet.ts
Und schließlich Sie justt müssen Sie Ihre httpService auf Anbieter von ngModule:
appModule.ts
Nun, Sie können verwenden Sie httpService-überall in Ihrem code durch die Injektion, wie wir es in Komponente.ts
http.get()
gibt es eine erkennbare, aber er transformiert es auf ein Versprechen mit den rxjstoPromise()
funtion. Das ist vollkommen OK in Angular2 es gibt also absolut keine Notwendigkeit zur Umgestaltung von allen seinen code.Ja ich hab das, ist der Grund für das neu-schreiben war, um ihn zu verstehen, wie es implementiert werden kann, mit best practices.
können Sie bitte erklären, warum Ihr code ist die beste Praxis über seine?
er war versucht zu konvertieren, das beobachtbare zu Versprechen, ist nicht erforderlich. Beobachtbar ist eine Art Versprechen nur. Anderen als, der code ist strukturierter und Modularisieren. Lassen Sie mich wissen, wenn Sie denken, ich kann das update nichts mehr in meiner Antwort.
observablen im Rahmen einer HTTP-Anforderung machen Sie keinen semantischen Sinn. Eine Anforderung ist etwas, das einen Anfang und ein Ende hat. Observablen sind kontinuierliche Ströme von Daten. Also Nein, mit observablen hier ist es nicht best practice.
InformationsquelleAutor jigar gala
hier ein Beispiel, wie Sie es tun können.
Nicht notwendig, gibt aber einen schönen code-Struktur, erstellen Sie eine service behandelt alle Ihre Benutzer-Anforderungen:
User Service
So, hier Holen wir die user mit einer bestimmten id und erzeugt ein user-Objekt mit dem zurückgegebenen json.
- User-Modell
Service-Aufruf
Hoffe, das hilft
InformationsquelleAutor blacksheep_2011
Hatte ich ein ähnliches Problem. Nach dem Debuggen der response-Objekt habe ich festgestellt, dass Daten nicht vorhanden sind, auf dem res.json () - Objekt. Ändern Sie an dieser Stelle:
Bemerken alles, was ich Tat, war ändern Sie die Zeile, die liest
return res => res.json().data as Query[];
zu
return res => res.json() as Query[];
InformationsquelleAutor nathanjessen