[英]Angular HTTP observable of tuple
In my service I have getTasks()
method: 在我的服务中,我有
getTasks()
方法:
getTasks(): Observable<TaskDto[]> {
let url = `/tasks/gettasks`;
return this.http
.get(url)
.subscribe(res => res);
}
That works fine, but now I want to read response header and return it's value along with the payload. 效果很好,但是现在我想读取响应标头,并将其值与有效载荷一起返回。 So instead of
Observable<TaskDto[]>
the method should return observable of tuple: Observable<[TaskDto[],Number]>
因此,该方法应返回
Observable<[TaskDto[],Number]>
而不是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];
});
}
I was able to read header value, but how can I return Observable<[TaskDto[],Number]
from getTasks()
? 我能够读取标头值,但是如何从
getTasks()
返回Observable<[TaskDto[],Number]
?
You should use map
in your getTasks
method to map your http response into the tuple that you really want to return. 您应该在
getTasks
方法中使用map
来将http响应映射到您真正想要返回的元组中。 Something like this: 像这样:
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;
}));
}
Then subscribe to this method from the calling component. 然后从调用组件订阅此方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.