在我的Angular应用中,我必须调用两个HTTP请求。第一个请求是HEAD,它在标头响应(记录总数)中返回重要参数。第二个请求是GET,当HTTP标头包含标头响应中的总记录数时,返回所有记录。
现在我有两个方法getHeader()和getData(records:number)。
this.appService.getHeader().subscribe(
(response) => {
const records = response.headers.get('X-Total');
this.appService.getData(records).subscribe(
(data) => {
this.data = dataFromServer;
}
);
}
);
效果很好,但是我想知道是否存在更优雅的解决方案?
答案 0 :(得分:0)
如果您修改后端,显然会更简单,因此只需要一个请求。也就是说,如果没有选择,可以使用switchMap
,如下所示:
import { switchMap } from 'rxjs/operators';
//...
this.appService.getHeader().pipe(
switchMap(resp => this.appService.getData(resp.headers.get('X-Total')))
).subscribe(data => {
this.data = data;
});