gpt4 book ai didi

javascript - .asObservable 不想与 Observable.forkJoin 一起工作

转载 作者:太空狗 更新时间:2023-10-29 17:50:08 25 4
gpt4 key购买 nike

我有服务:

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

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

最佳答案

由于您正在使用 BehaviorSubject,您应该知道可以手动调用 next()complete()

forkJoin() 运算符仅在其所有源 Observable 都已发出至少一个值并且它们都已完成时才会发出。由于您使用的是 Subject 和 asObservable 方法,源 Observable 永远不会完成,因此 forkJoin 运算符永远不会发出任何东西。

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

两个非常相似的问题:

关于javascript - .asObservable 不想与 Observable.forkJoin 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43258881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com