Mein Service-Klasse enthält Code wie:Warum brauchen wir hier keine Observablen zu abonnieren, bevor wir sie in ein Versprechen umwandeln?
Service.ts
//all imports are done
@Injectable()
export class Service{
constructor(private http: Http) { }
getGoogle():Observable<any> {
console.log("Inside service");
return this.http.get('https://jsonplaceholder.typicode.com/posts/1');
}
}
Meine Seite Komponente, wo ich den Einsatz von Service.
Page.ts
//all imports are done
export class Page1{
constructor(private service: Service, private navCtrl: NavController) { }
async get() {
console.log("inside get method");
const data = await this.service.getGoogle().toPromise();
console.log('The response is' , data);
}
}
Ich habe das gewünschte Ergebnis erhalten, aber wie das Konzept der Observablen und Beobachter zu verstehen, mein beobachtbare soll einen Beobachter muß subscribe.Then sitzen, warum should'nt der Code const data = await this.service.getGoogle.subscribe().toPromise()
nicht hier arbeiten und zeigt Fehler, dass property toPromise() does not exists on type Subscription.
ich die offizielle Ressource von toPromise() sah, wo ich fand, dass es mit .just().toPromise()
verwendet wird .Dann I .just()
API gefunden, die besagt, dass
Die gerade() Methode emittiert seine Parameter (n) als OnNext Benachrichtigungen und Danach sendet sie eine Benachrichtigung OnCompleted.
So ist es mit den Funktionen von hier abonnieren dann, warum es nicht mit .subscribe()
verwendet wird?
Weil 'toPromise' ist aufrufbar auf einem' Observable' - kein 'Subscription' - und' toPromise' das Abonnement führt. – cartant
Der Verweis in Ihrer Frage verweist auch auf die RxJS 4-Dokumente. Das RxJS 5 - was in Angular - Docs verwendet wird, ist [hier] (http://reactivex.io/rxjs/). – cartant