Мне нужно получить данные из службы.Затем мне нужно перебрать данные и извлечь данные с идентификаторами, полученными при первом вызове.
Моя цель - оптимизировать производительность угловых привязок, вызывая markForCheck () для ChangeDetectorRef при загрузке всех данных.
Это мой текущий код.Это сделать работу.Но вызов markForCheck () выполняется до загрузки всех данных.
this.subs.push(
this.supplierService
.supplier(this.supplierId)
.pipe(
tap(supplier => {
this.subs.push(
of(supplier.employees.map(emp => emp.authId))
.pipe(
mergeMap(ids => ids.map(id => this.authRegisterService.lookupId(id))),
mergeMap(res => res)
)
.subscribe(
result => {
this.authRegs.push(result);
},
error => {
this.toastr.error(error);
return EMPTY;
}
)
);
}),
tap(supplier => {
this.subs.push(this.cvrService.getCompany(supplier.cvr).subscribe(cvr => (this.cvr = cvr)));
}),
tap(supplier => {
this.subs.push(
of(supplier.locations.map(loc => loc.sorId))
.pipe(
mergeMap(ids => ids.map(id => this.sorService.getLocation(id))),
mergeMap(res => res)
)
.subscribe(sor => {
this.sors.push(sor);
})
);
})
)
.subscribe(supplier => {
this.supplier = supplier;
this.supplierStatusLabel = SupplierStatusNames.get(supplier.status);
this.cd.markForCheck();
})
);
Я прочитал документацию для forkJoin , но не знаю, как объединить ее с первым вызовом,Все входные данные очень ценны.