使用 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 调用。
- 我只需要return第一次调用的结果。
- 第一个调用必须在第二个之前发出。
我想到了如下使用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)
),
);
我正在将 RXJS 6 与 Angular 6 HttpClient 一起使用,我正在尝试按顺序执行两个 http 调用。
- 我只需要return第一次调用的结果。
- 第一个调用必须在第二个之前发出。
我想到了如下使用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)
),
);