使用RXJS发出两个连续的http调用并仅返回第一个调用的结果

时间:2018-09-25 15:10:55

标签: angular rxjs angular-httpclient rxjs6

我正在将RXJS 6与Angular 6 HttpClient一起使用,并且试图依次执行两个http调用。

  • 我需要仅返回首次通话的结果
  • 第一次呼叫必须在第二次呼叫之前发出

我想到了如下使用tap方法的方法:

someMethod(items: Item[]): Observable<Item[]> {
   const one = this.http.put<{ items: Item[] }>('urlOne', items);
   const two = this.http.put<void>('urlTwo', items);

   return one.pipe(
     mergeMap((res)=> res.items),
     tap(two)
   );
}

有更好的方法吗?如果可以,怎么办?

1 个答案:

答案 0 :(得分:3)

您可以使用map而忽略第二个结果:

one.pipe(
  mergeMap((res) => two.pipe(
    mapTo(res)
  ),
);