0

我正在使用一个使用 RxJS Observables 的 Typescript Angular2 站点。我正在获取一段用户数据并访问两个不同的 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 回答