【发布时间】:2020-11-14 04:49:39
【问题描述】:
好吧,我对 RxJs 真的很不好,我正面临一个问题。
在我的一个 Angular 组件中,我加载如下数据:
this._obs$.push(this.store1.loadTypes());
this._obs$.push(this.store2.loadLimitQuantities());
// [...]
forkJoin(this._obs$).subscribe(
next => console.log(next),
error => console.log(error)
);
其中一个 observables 从 API 1 接收数据,然后需要从 API 1 接收的数据中从 API 2 检索数据:
loadLimitQuantities(): Observable<LimitQuantity[]> {
// API 1
const obs = this.limitQuantityService.getLimitQuantities().pipe(share());
obs.subscribe(data => {
if (data) {
const ifs = [];
data.forEach(element => {
// API 2
ifs.push(this.technicalAttribTextIFSService.getType(element.ifsType).pipe(take(1), tap((type) => {
type ? element.type = type.valueText : element.type = null;
})));
});
forkJoin(ifs).subscribe(end => {
this.limitQuantitiesSubject.next(data);
});
} else {
console.error("Erreur lors du chargement des quantités limites");
}
});
// AP1
return obs;
}
不幸的是,我的加载数据的 Angular 组件的 next 接收得太早了,因为 API 1 已完成返回数据,但 API 2 未完成。
怎么办? return 应该是 API 2 的 forkJoin。
StackBlitz : here
感谢您的帮助。
【问题讨论】:
标签: angular typescript rxjs observable store