我正面临来自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