Я пытаюсь получить новый результат на основе старого результата.Поэтому, когда конкретным параметром в моем доминирующем вызове является X, он должен вызывать другую функцию, но моя текущая проблема заключается в том, что область продолжает работать, что приводит к потере нового параметра.
Код выглядит следующим образом:
export class DashboardGuard implements CanActivate {
public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
this.logger.info(DashboardGuard::canActivate());
return Observable.create((subscribe: Subscriber<boolean>): void => {
Observable.forkJoin(
this.mapSettingsService.fetch(),
this.userSettingsService.fetch(),
this.mapFenceService.fetch(),
this.markersMotesService.fetch(),
this.markersStaticsService.fetch()
).subscribe((result: [MapSettings, UserSettings, MapFenceGroup[], MarkersMotes, MarkersStatics]): void => {
// Fetch loaded motes and statics
const mapSettings: MapSettings = result[0];
const userSettings: UserSettings = result[1];
const mapFenceGroups: MapFenceGroup[] = result[2];
let markersMotes: MarkersMotes = result[3];
const markerStatics: MarkersStatics = result[4];
for (let i in markersMotes.items) {
if (markersMotes.items[i].longitude === 0 || markersMotes.items[i].latitude === 0) {
// Here I want to call another fetch with the data from the previous fetches, but the program scope
// should wait until it finished those fetches.
// Example of fetch:
Observable.forkJoin(
this.markersMotesService.newfetch(markersMotes.items[i].macAddress),
).subscribe((result: [MarkersNolocations]): void => {
const newResult: MarkersNolocations = result[0];
if (newResult.missedCounter > 0) {
markersMotes.items[i].latitude = 10;
markersMotes.items[i].longitude = 10;
}
});
}
}
})
Я получаю, что forkjoin - это отличный вариант для получения всех звонков, но как насчет звонков внутри этого?
Любая помощь будет принята с благодарностью!
Привет,
Брэм