我一直在通过get请求获取对象。
我在component.ts
中有以下功能private _getPolygonById(id: number) {
let poly: any;
this.dataService.getCollectionbyId(id).subscribe(data => {
const res = data.json();
poly = JSON.parse(res.string);
});
return poly;
}
我的service.ts包含以下内容:
getCollectionbyId(id: number) {
console.log("launching request");
return this.http.get('api/project-collections/'+id);
}
问题是poly是未定义的并且如此返回,响应被异步处理。我怎么能等待请求,直到它得到响应,然后影响它到poly,返回它?
答案 0 :(得分:0)
如您所知,_getPolygonById
函数在您获得更改以在订阅块中获取结果之前返回。经营顺序如下:
private _getPolygonById(id: number) {
let poly: any; // 1
this.dataService.getCollectionbyId(id).subscribe(data => {
// 3
const res = data.json();
poly = JSON.parse(res.string);
});
return poly; // 2
}
您应该从_getPolygonbyId
函数返回observable,并在您想要使用它时订阅结果。
ngOnInit() {
this._getPolygonById(5).subscribe(// do something with the returned polygon)
}
private _getPolygonById(id: number): Observable<any> {
return this.dataService.getCollectionbyId(id);
}