我必須爲我的angular2應用程序進行多個http調用。我首先必須進行一個呼叫,等待響應,從中檢索下一個呼叫的URL並進行後續呼叫。同樣,我的第三個電話是基於第二個電話的回覆。我必須執行這個操作,直到http呼叫的響應沒有下一個呼叫的URL。這裏的問題是,我無法知道我打算做多少個呼叫(它完全依賴於當前的響應,如果它有下一個呼叫的鏈接)。另外我需要整合來自所有呼叫的響應。根據Angular2中的先前響應進行多個http調用
這是每個調用的響應。
{
"data": {
"page": 5,
"pageSize": 500,
"totalSize": 3000,
"entries": [],
"nextPage": {
"href": "http://someurl?
requestParam=someValue&page=1&pageSize=500",
"rel": null
}
}
}
我不得不提取下一頁屬性的值,使HTTP調用,直到我得到的地方下一頁屬性爲null,像下面的響應。
{
"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);
});
}
任何建議,非常感謝。
在第二,第三等...將網址設置爲nextPage href? – mast3rd3mon
您可以使用遞歸,但您甚至不需要並且可以並行執行所有調用(第一個除外):由於總大小(3000)和頁面大小(500),您知道應該有6頁。 –