ajax - 元组的 Angular HTTP 可观察对象
问题描述
在我的服务中,我有getTasks()
方法:
getTasks(): Observable<TaskDto[]> {
let url = `/tasks/gettasks`;
return this.http
.get(url)
.subscribe(res => res);
}
这很好用,但现在我想读取响应标头并将其值与有效负载一起返回。因此,Observable<TaskDto[]>
该方法应该返回可观察的元组,而不是:Observable<[TaskDto[],Number]>
getTasks(): Observable<[TaskDto[],Number]> {
let url = `/tasks/gettasks`;
return this.http
.get<TaskDto[]>(url, {observe: 'response'})
.subscribe(res => {
let payload:TaskDto[] = res.body;
let page:Number = Number(res.headers.get('X-Pagination'));
let output = [payload, page];
});
}
我能够读取标头值,但是如何Observable<[TaskDto[],Number]
从中返回getTasks()
?
解决方案
您应该map
在您的getTasks
方法中使用将您的 http 响应映射到您真正想要返回的元组。像这样的东西:
getTasks(): Observable<[TaskDto[],Number]> {
let url = `/tasks/gettasks`;
return this.http
.get<TaskDto[]>(url, {observe: 'response'})
.pipe(map(res => {
let payload:TaskDto[] = res.body;
let page:Number = Number(res.headers.get('X-Pagination'));
let output: [TaskDto[],Number] = [payload, page];
return output;
}));
}
然后从调用组件订阅此方法。
推荐阅读
- angular - 订阅可观察者不会执行
- javascript - 在 php 中使用 LocalStorage 变量
- nginx - Kubernetes 入口更新与部署
- scala - 将单列划分为多列的最佳方法 Dataframe Spark Scala
- charts - 第一步的谷歌阶梯面积图错误
- environment-variables - Terraform 版本更新
- php - 如何使用 ACF 在自定义页面模板中正确显示照片?
- ffmpeg - ffmpeg 方法设置失败:461 不支持的传输
- c++ - 在消除 DPI 和 SV 程序中的编译错误方面需要帮助
- php - 试图获取非对象的属性'page_slug'(查看:)Laravel 6.*