我正在尝试从角度 7 的可观察值中获取值。我在服务中有一些类似这样的函数
getSomething(): Observable<MyObject[]> {
let result = new Subject<MyObject[]>();
this.callApi('hello-world').subscribe(data => {
console.log('hello-world data: ', data);
result.next(this._mapToMyObjectArray(data));
});
return result.asObservable();
}
_mapToMyObjectArray(data: any): MyObject[] {
...
}
我能够毫无问题地记录 hello-world 数据(API 被调用并按我的预期响应)。
但是,当我尝试从另一个组件订阅此组件时,例如
doStuff(): void {
console.log('do stuff with something');
this.myService.getSomething().subscribe(
(result) => console.log('result', result),
(error) => console.log('error', error),
() => console.log('done')
);
}
当我调用
doStuff()
时,我看到第一个日志 (do stuff with something
),但看不到其他日志(成功/错误/完成)。
任何人都可以提供一些见解吗?感谢您的帮助,我确信这是一件微不足道的事情。
希望这可以帮助别人。我对主体和观察者之间的差异有一个根本性的误解。请参阅此处。
我通过在
getSomething
函数中创建一个观察者而不是主题来解决这个问题。
getSomething(): Observable<MyObject[]> {
var result: Observable<MyObject[]>;
this.callApi('hello-world').subscribe(data => {
console.log('hello-world data: ', data);
result = of(this._mapToMyObjectArray(data));
});
return result;
}
其中
of
是从 rxjs 导入的。