角度可观察/订阅不起作用



我正在尝试从角度为 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;
}

从 RXJS 导入of

最新更新