在组件上管理多个 RxJs Observable
Managing multiple RxJs Observables on a component
下面是我的应用程序中一个组件的代码片段,在我分别获取值后,我订阅了多个可观察对象并加载数据[一个 api 调用]。
ngOnInit() {
this.combinedObservable$ = combineLatest(
this.service1.getStudentId(),
this.service2.getTeacherId(),
this.service3.getResultId(),
this.service4.getReportId(),
this.service5.getYearId(),
).subscribe(value => {
this.studentId = value[0];
this.teacherId = value[1];
this.resultId = value[2];
this.reportId = value[3];
this.yearId = value[4];
// Load Data for the page by making an api call
this.loadData(value[0], value[1], value[2], value[3], value[4]);
});
}
ngOnDestroy() {
this.combinedObservable$.unsubscribe();
}
CombineLatest 在这种情况下对我有用,但是 loadData 被多次调用。我相信这是因为 observables 在更新后发出值。服务中 [studentId, teacherId, resultId, reportId, yearId] 的初始值设置为 0,以迎合 combineLatest。
在收到所有 5 个值 [不是 0 的初始值] 之后,有什么方法可以调用 LoadData 方法 [api 调用]?类似于 onComplete?
将 combineLatest
替换为 forkJoin
,这将等待所有可观察对象完成后再发出。
下面是我的应用程序中一个组件的代码片段,在我分别获取值后,我订阅了多个可观察对象并加载数据[一个 api 调用]。
ngOnInit() {
this.combinedObservable$ = combineLatest(
this.service1.getStudentId(),
this.service2.getTeacherId(),
this.service3.getResultId(),
this.service4.getReportId(),
this.service5.getYearId(),
).subscribe(value => {
this.studentId = value[0];
this.teacherId = value[1];
this.resultId = value[2];
this.reportId = value[3];
this.yearId = value[4];
// Load Data for the page by making an api call
this.loadData(value[0], value[1], value[2], value[3], value[4]);
});
}
ngOnDestroy() {
this.combinedObservable$.unsubscribe();
}
CombineLatest 在这种情况下对我有用,但是 loadData 被多次调用。我相信这是因为 observables 在更新后发出值。服务中 [studentId, teacherId, resultId, reportId, yearId] 的初始值设置为 0,以迎合 combineLatest。
在收到所有 5 个值 [不是 0 的初始值] 之后,有什么方法可以调用 LoadData 方法 [api 调用]?类似于 onComplete?
将 combineLatest
替换为 forkJoin
,这将等待所有可观察对象完成后再发出。