2017-04-06 56 views
3

工作,我有服务:.asObservable不希望与Observable.forkJoin

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.forkJoinObservable变量config

我需要在服务中存储配置,并等待未点亮它们和其他请求未完成停止加载程序。

回答

2

由于您使用的是BehaviorSubject您应该知道您可以手动拨打next()complete()

forkJoin()forkJoin()运营商只有当它的所有源观测站发射至少一个值它们全部完成时才发射。由于您使用的是Subject和asObservable方法,所以源Observable永远不会完成,因此运算符永远不会发出任何东西。

顺便说一句,使用forkJoin只有一个源Observable没什么意义。也可以看看zip()combineLatest()运营商是相似的,也许这是你所需要的。

两个非常相似的问题:

+0

tywm的答案 – user2886051