【发布时间】:2017-05-05 14:47:55
【问题描述】:
我必须为我的 angular2 应用程序进行多次 http 调用。我首先必须打一个电话,等待响应,从中检索下一个电话的 url 并进行后续电话。同样,我的第三个电话是基于第二个电话的响应。我必须执行此操作,直到 http 调用的响应没有下一个调用的 url。这里的问题是我无法知道我要打多少电话(它完全取决于当前的响应,如果它与下一个电话有链接)。我还需要整合所有电话的响应。
这是每个调用的响应。
{
"data": {
"page": 5,
"pageSize": 500,
"totalSize": 3000,
"entries": [],
"nextPage": {
"href": "http://someurl?
requestParam=someValue&page=1&pageSize=500",
"rel": null
}
}
}
我必须从 nextPage 属性中提取值并进行 http 调用,直到我得到 nextPage 属性为空的响应,如下所示。
{
"data": {
"page": 5,
"pageSize": 500,
"totalSize": 3000,
"entries": [],
"nextPage": null
}
}
这是我用来拨打电话的代码。我不确定如何 链接这些调用。
private load(extraUrlParam?: any) {
let me = this;
let url = me.getUrl(type, extraUrlParam, null);
me.pHttp.get(url, this.getHttpOptions())
.map((response: Response) => response.json())
.subscribe(
data => {
console.log("data received");
me.data = this.preProcessData(data);
me.dataSubject.next(this.data);
},
error => {
this.dataSubject.error(error);
me.handleError(error, url, type);
});
}
非常感谢任何建议。
【问题讨论】:
-
在第二个、第三个等...设置url为nextPage href?
-
你可以使用递归,但你甚至不需要,并且可以并行进行所有调用(第一个调用除外):因为你有总大小(3000)和页面大小(500),你知道应该有 6 页。