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

Using RXJS to issue two sequential http calls and returning the result of the first one only

我正在将 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)
   );
}

有没有更好的方法?如果有怎么办?

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

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