我有服务:
export class ConfigService {
private _config: BehaviorSubject<object> = new BehaviorSubject(null);
public config: Observable<object> = this._config.asObservable();
constructor(private api: APIService) {
this.loadConfigs();
}
loadConfigs() {
this.api.get('/configs').subscribe( res => this._config.next(res) );
}
}
尝试从组件中调用它:
...
Observable.forkJoin([someService.config])
.subscribe( res => console.log(res) ) //not working
someService.config.subscribe( res => console.log(res) ) // working
...
如何将Observable.forkJoin
与Observable
变量config
一起使用?
我需要在服务中存储配置并等待它们点亮它们并且其他请求没有完成停止加载器。
答案 0 :(得分:5)
由于您使用的是BehaviorSubject
,因此您应该知道可以手动拨打next()
和complete()
。
forkJoin()
运算符仅在所有源Observable发出至少一个和值时才会发出。由于您正在使用Subject和asObservable
方法,因此源Observable永远不会完成,因此forkJoin
运算符永远不会发出任何内容。
顺便说一句,将forkJoin
与一个源Observable一起使用没有多大意义。也许可以查看类似的zip()
或combineLatest()
运算符,也许这就是您所需要的。
两个非常相似的问题: