0

RxJS Observables を使用する Typescript Angular2 サイトで作業しています。ユーザー データの一部を取得し、2 つの異なる API エンドポイントにアクセスしています。私は.forkJoinそれらを一緒にそうしています

var First: TypeA = this.api.FirstEndpoint(...);
var Second: TypeB = this.api.SecondEndpoint(...);
Observable.forkJoin(First, Second).subscribe((results: (TypeA|TypeB)[]) => {
    var first = <TypeA>results[0];
    var second = <TypeB>results[1];
    ...
});

これは技術的には機能しますが、少し扱いに​​くいと感じています。特に、ますます多くのリクエストまたはさまざまな数のリクエストに参加する場合。results[0]それが TypeA である1とも TypeBであるとも言いません。

入力するためのよりスムーズな方法、resultsまたはリクエストを結合する代わりにforkJoin、それらの応答を異なるままにする (したがって、より明示的に入力する) 方法はありますか?

4

1 に答える 1

0

結果のストリームのタイプを推測するためにコンパイラが使用する独自のセレクターを定義できます。

var combined = Observable.forkJoin(First, Second, (first, second) => {
  return { first, second };
});

combined.subscribe(result) => {
    // I don't think you'll need to explicitly cast
    var first = result.first;
    var second = result.second;
    ...
});
于 2016-03-17T17:19:35.550 に答える