Ich frage mich, ob es einige Rxjs Operation ich kann nach ForkJoin aufrufen, um zu wissen, ob meine parallelen asynchronen Aufgaben abgeschlossen sind, so kann ich etwas wie * ngIf = "geladen | async" haben in angular2 Vorlage.angular2 rxjs Weg zu überprüfen forkJoin komplett gemacht
Ich kam mit einer Lösung, aber es scheint mir chaotisch. Ich wette, es gibt eine sauberere rxJS Art und Weise, dies zu tun.
plunkr wenn Sie es brauchen: https://plnkr.co/edit/UFVCJpjKAEGguMls5eIl?p=preview
public loaded:Observable<boolean>;
constructor(private http:Http) {
// This is the best solution I could come up with. Is there a cleaner way
// by just calling some operation after forkJoin instead of building my own observable?
this.loaded = Observable.create((observer) => {
observer.next(false);
Observable.forkJoin(
this.something1(),
this.something2(),
() => {
// now we know we have finished
observer.next(true);
}
).subscribe();
});
}
something1() {
return this.http.get('test1.json').map((res) => res.json());
}
something2() {
return this.http.get('test2.json').map((res) => res.json());
}
UPDATE: Basierend auf Luka Kommentar, dies versucht. funktioniert super. viel schöner:
this.loaded = Observable.combineLatest(
this.something1(),
this.something2(),
() => {
// now we know we have finished
return true
}
);
Ich denke, können Sie 'combineLatest' die beiden und dann' map' in einen Booleschen. –
Sie haben Recht! Viel besser. Danke. –
Kein Problem, ich schrieb eine Antwort, wie ich es machen würde. :) –