export class PropertiesService {
getCommonProperties():any{
let URL: string = "/xxxx/yyyyy";
let headers = new Headers();
let options = new RequestOptions({ headers });
options.method = GET;
return this.http.request(URL, options).map(response => {
{
console.log("response ", response.json());
return response.json();
};
}
}
/**************************/
export class A {
this.commonProperties.setPropertiesMap(
this.propertiesService.getCommonProperties().subscribe(result =>
{ return result;})
);
//logic to iterate commonPropertiesMap
}
/ * PropertiesMap是一个存储一些属性的键值对的映射,我有一个名为propertiesService的服务,在这里我从服务器获取属性流,并且必须将结果设置到属性映射中。我从服务器获取结果(我可以在控制台中看到它),因为即使在我从服务器获取响应之前,控件仍将传递到下一步,所以抛出了错误,即PropertiesMap是不可迭代的。有人可以帮我保持控制的逻辑,直到我从HTTP请求中获取结果并将值设置到PropertiesMap中,然后遍历地图? * /
答案 0 :(得分:1)
将任何依赖结果的内容放入订阅函数中,或者将在订阅函数中调用的函数放在其中,如下所示:
this.propertiesService.getCommonProperties().subscribe(result => {
// Do you logic that relies on the results within here
this.commonProperties.setPropertiesMap(result);
return result;
})
答案 1 :(得分:0)
您必须将逻辑进行迭代,而不是在订阅中进行
this.propertiesService.getCommonProperties().subscribe(result =>
this.commonProperties.setPropertiesMap();
//logic to iterate commonPropertiesMap
return result;
);