いくつかのrxjs操作があるかどうか疑問に思っていました。私の並列非同期タスクが完了したかどうかを知るためにforkJoinを呼び出すことができるので、* ngIf = "loaded | async" angular2テンプレートでangular2 rxjs forkJoinを完全にチェックする方法
私は1つの解決策を思いついたが、それは私にとっては厄介なようだ。 私はこれを行うクリーナーrxJSの方法があると確信しています。
plunkrあなたがそれを必要とする場合: 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: ルカさんのコメントに基づき、これを試してみました。よく働く。はるかに良い:
this.loaded = Observable.combineLatest(
this.something1(),
this.something2(),
() => {
// now we know we have finished
return true
}
);
私はあなたが '2をcombineLatest'して、ブールに' map'ことができると思います。 –
あなたは正しいです!ずっといい。ありがとうございました。 –
問題はない、私は答えを書いた、どうすればいいだろう。 :) –