2017-09-12 17 views
-2

In rxjs, wenn ich http-get, akzeptiere ich beobachtbare Art, anstelle von Promise Art von einfachem Javascript.rxJS - was statt "Promise.done" kommt

Jetzt suche ich nach dem, was anstelle von versprechen.don kommen?

Ich habe gesehen, dass Leute Observale.map verwenden, aber ich brauche keine map - map ist für mehrere http-Aufrufe.

Was kommt vor?

+0

Sobald Weg ist nur Aufruf '.toPromise()' auf Ihrem Observable und nutzen Sie die Funktionen, die Sie bereits kennen. Möglicherweise müssen Sie 'import 'rxjs/add/operator/toPromise' verwenden;' –

+0

'.subscribe (...)' ist normalerweise das Ende der Kette. Siehe http://reactivex.io/rxjs/manual/tutorial.html. – jonrsharpe

+0

Verwenden Sie '.subscribe()' auf Ihrem 'Observable' oder' .toPromise() ', aber Sie müssen sich daran gewöhnen,' .then() 'zu verwenden, da es kein' .done() 'auf einem Standard' gibt Versprechen. Ich nehme an, Sie sind an die kaputte jQuery-Implementierung gewöhnt. – Duncan

Antwort

1

Abonnieren Sie einfach die Anfrage-Methode (wie get/post/etc). Sie müssen nicht toPromise() verwenden, und ich würde empfehlen, da Angular sehr gut mit Observables funktioniert und sie sind viel mächtiger als Promises.

// Make the HTTP request: 
this.http.get('/api/items').subscribe(data => { 
    // Handle the result from the response. 
    this.results = data; 
}); 

https://angular.io/guide/http

Sorgen Sie sich nicht von diesen Observablen über abzumelden, da sie die Das Gesamt() -Methode für den Beobachter und Ziel nennen.

Es ist erwähnenswert, dass alle von HttpClient zurückgegebenen Observables kalt sind und keine Anfragen gestellt werden, bis Sie .subscribe() an sie senden.

Ich denke, Sie könnten Karte mit switchMap auch verwirren, Karte ist für die Umwandlung der emittierten Elemente innerhalb des Streams, switchMap wird häufig zur Verkettung von Observablen verwendet. http://reactivex.io/documentation/operators/map.html

Verwandte Themen