我有一种形式,其中包含通过调用API检索的块。
我需要根据该特定调用来处理每个调用(我正在基于该调用创建formGroup部件)。
我想要的是具有某种全局的可观察/状态,将在进行和处理所有呼叫时完成。
现在,我通过创建BehaviorSubject计数器来做到这一点,并在每次请求时都增加它。当此计数器达到某个值时,我将loading
更改为false
并显示一个表格。有更好的方法吗?
看起来像
o1.subscribe(() => {... this.counter.next(this.counter.value + 1) });
o2.subscribe(() => {... this.counter.next(this.counter.value + 1) });
o3.subscribe(() => {... this.counter.next(this.counter.value + 1) });
。
this.counter.subscribe(val => if (val === 3) { this.loading = false; }
我曾经考虑过创建of()
包装器,并在其周围使用concat()
,但我认为这是不对的。
答案 0 :(得分:1)
如果不关心订单,则可以使用rxjs中的forkJoin,其工作原理类似于Promise.all,
forkJoin([...requests])
.subscribe(_ => this.loading = false;)
答案 1 :(得分:-1)
请使用RxJs中的forkjoin
ngOnInit() {
forkJoin(
this._myService.makeRequest('Request One', 2000),
this._myService.makeRequest('Request Two', 1000)
this._myService.makeRequest('Request Three', 3000)
)
.subscribe(([res1, res2, res3]) => {
this.propOne = res1;
this.propTwo = res2;
this.propThree = res3;
});
}