如果我有一个可观察的对象o:
let o: Observable<Object> = ...
我可以订阅这个对象,但为什么不允许订阅Subscriber对象。举一个现实世界的例子:
myServiceCall() {
let o: Observable<Object> = ...
return o.subscribe(...)
}
ngOnInit() {
this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object
}
有了承诺,那就像是连续使用几个。我不明白为什么不允许这样做。
答案 0 :(得分:0)
问题是myServiceCall
方法返回一个子描述而不是一个可观察的。而且您无法订阅订阅。此对象提供了一个unsubscribe
方法来取消针对observable的订阅。
选项可以是do
运算符:
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
}
答案 1 :(得分:0)
subscribe()
会返回Subscription
而不是Observable
。您无法订阅Subscription
。
改为使用
myServiceCall() {
let o: Observable<Object> = ...
return o.map(...)
}
ngOnInit() {
this.myServiceCall().subscribe(...) // Not allowed on a Subscriber object
}