我正面臨來自HTTP請求響應的問題Angular 2。 我正在使用「.subscriber」來獲取HTTP請求的響應。異步AJAX響應問題
以下是我寫的代碼:
NewJobDetailsComponent.ts:
ngOnInit() {
this.masterData = this.masterDataS.getMasterData(["designations"]);
//code breaking at below line
this.designations = this.masterData["designations"];
}
MasterDataS.ts:
private masterData = {};
private baseUrl = "some URL";
getMasterData(keys) {
let missingData = [];
for (let key of keys) {
this.baseAjaxService.doPost(this.baseUrl, missingData)
.subscribe(data => {
this.masterData[key] = data[key];
this.sessionStorage.setValue(key, data[key]);
});
}
return this.masterData;
}
在上面的代碼,我去拿點來自服務器的數據,之後我必須使用結果分配給this.designations。
現在爲了使服務通用,我必須在MasterDataS.ts中爲這個請求使用.subscriber。因此,我無法在NewJobDetailsComponent.ts中編寫.subscriber
但是,由於NewJobDetailsComponent.ts中的代碼取決於HTTP請求的結果。我怎樣才能以同步方式編寫代碼,以便在得到HTTP的結果之後,只有下面的語句纔會被執行?
this.designations = this.masterData["designations"];
這種問題我在大多數情況下只能在這個例子中改變。
[請不要把問題標題標籤(https://stackoverflow.com/help/tagging) – Liam
的可能的複製[如何恢復來自異步調用的響應?](https://stackoverflow.com/quest ion/14220321/how-do-i-return-the-an-asynchronous-call) – Liam
@Liam:我在Angular2中特別關注這個問題。以上鍊接沒有與Angular 2相關的任何內容。 – Ricks