.asObservable不想使用Observable.forkJoin

时间:2017-04-06 15:01:46

标签: javascript angular rxjs observable fork-join

我有服务:

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一起使用?

我需要在服务中存储配置并等待它们点亮它们并且其他请求没有完成停止加载器。

1 个答案:

答案 0 :(得分:5)

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

forkJoin()运算符仅在所有源Observable发出至少一个值时才会发出。由于您正在使用Subject和asObservable方法,因此源Observable永远不会完成,因此forkJoin运算符永远不会发出任何内容。

顺便说一句,将forkJoin与一个源Observable一起使用没有多大意义。也许可以查看类似的zip()combineLatest()运算符,也许这就是您所需要的。

两个非常相似的问题: