Ak mám pozorovateľný objekt o:
let o: Observable<Object> = ...
Môžem sa prihlásiť k odberu tohto objektu, ale prečo nie je povolené prihlásiť sa k odberu objektu Účastník: Ak chcete dať príklad skutočného sveta:
myServiceCall() {
let o: Observable<Object> = ...
return o.subscribe(...)
}
ngOnInit() {
this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object
}
Sľubmi by bolo ako používať niekoľko potom v rade. Nevidím dôvod, prečo to nie je povolené.
odpovede:
0 pre odpoveď č. 1Problém je, že myServiceCall
metóda vráti podpis a nie je pozorovateľná. A nemôžete sa prihlásiť na odber. Tento objekt poskytuje a unsubscribe
spôsob zrušenia upisovania proti pozorovateľným.
Možnosť by mohla byť použitie do
operátor:
myServiceCall() {
let o: Observable<Object> = ...
return o.do((data) => { // <----
// do something with the received data without subscribing
});
}
ngOnInit() {
this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object
}
0 pre odpoveď č. 2
subscribe()
vráti a Subscription
nie Observable
, Nemôžete sa prihlásiť k odberu Subscription
.
Použite namiesto toho
myServiceCall() {
let o: Observable<Object> = ...
return o.map(...)
}
ngOnInit() {
this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object
}