RxJs 将可观察对象与订阅链接起来
RxJs chaining observables with subscriptions
我有一个表单,其中包含通过调用 API.
检索的块
我需要根据那个特定的调用来处理每个调用(我正在根据那个调用创建一个 formGroup 部分)。
我想要的是拥有某种全局 observable/status,它将在所有调用都已发出并处理后完成。
现在我通过创建一个 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()
,但我认为这不对。
如果顺序不是问题,您可以使用 rxjs 中的 forkJoin,其工作方式类似于 Promise.all、
forkJoin([...requests])
.subscribe(_ => this.loading = false;)
请使用 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;
});
}
我有一个表单,其中包含通过调用 API.
检索的块我需要根据那个特定的调用来处理每个调用(我正在根据那个调用创建一个 formGroup 部分)。
我想要的是拥有某种全局 observable/status,它将在所有调用都已发出并处理后完成。
现在我通过创建一个 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()
,但我认为这不对。
如果顺序不是问题,您可以使用 rxjs 中的 forkJoin,其工作方式类似于 Promise.all、
forkJoin([...requests])
.subscribe(_ => this.loading = false;)
请使用 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;
});
}