kor*_*inp 2 ajax observable angular
在我的服务中,我有getTasks()方法:
getTasks(): Observable<TaskDto[]> {
let url = `/tasks/gettasks`;
return this.http
.get(url)
.subscribe(res => res);
}
Run Code Online (Sandbox Code Playgroud)
效果很好,但是现在我想读取响应标头,并将其值与有效载荷一起返回。因此,代替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];
});
}
Run Code Online (Sandbox Code Playgroud)
我能够读取标头值,但是如何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;
}));
}
Run Code Online (Sandbox Code Playgroud)
然后从调用组件订阅此方法。
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |