Ich frage mich, ob es möglich ist zu überprüfen, ob Observable einen Wert erhalten. Und ich will das, ohne es zu abonnieren, weil ich zu faul bin, meinen aktuellen Code zu überschreiben. Problem ist, dass ich Observable in der übergeordneten Komponente erstellen und dann an untergeordnete Komponenten übergeben. Und ich brauche nur ein winziges Ding von ihm, also nur für die Anmeldung, scheint unnötig ...Rxjs - prüfen, ob Observable leer ist, ohne es zu abonnieren
Eltern-Komponente:
adverts$: Observable<advert[]>;
ngOnInit() {
this.adverts$ = this.advertService.advertsPerUser();
Service:
advertsPerUser() {
return this.advertsKeysPerUser()
.map(adKeys => adKeys.map(adKey => this.afDb.object('adverts/' + adKey.$key)))
.flatMap(val => Observable.combineLatest(val));
}
Also mein Ziel ist es in parent-component.html etwas tun wie:
<div *ngIf="adverts$">
Ein 'Observable' hat keinen Wert, es gibt einen Wert aus, wenn die Quelle einen Wert ausgibt. Ich verstehe nicht, was das Problem mit 'subscribe()' ist. Ist der Wert asynchron? Verwenden Sie nicht "Observable", wenn Sie nicht asynchron möchten. Wenn Sie gezwungen sind, asynchron zu werden, haben Sie kein Glück. Es gibt keinen Weg zurück von asynchron zur Synchronisierung. –
@ Günter Zöchbauer - Meine einzige Sorge hier ist Leistung. Ich dachte, wenn ich überprüfen könnte, ob Observable leer ist oder nicht, ohne es zu abonnieren, würde es etwas Speicher sparen ... Und es sieht auch komisch im Allgemeinen aus - Erstellen eines Streams, nur um zu überprüfen, ob irgendetwas darin ist .. –
Klingt wie ein spezieller Fall einer vorzeitigen Optimierung ;-) –