在以下代码段中。首先,我从返回Observable的GeoCode服务获取lat lng。之后我正在进行http调用再次返回一个可观察的
getData(next?) {
return this.geoCode.getCurrentLocation().map(latlng => {
console.log(latlng);
var url = this.API_URL + "?location=" + latlng + "&radius=" + this.radius;
if (next != undefined) {
url = this.API_URL + "?location=" + latlng + "&radius=" + this.radius + "&next=" + next;
}
return this._http.get(url).map(res=>res.json());
});
};
上面的方法正在返回Observable<Observable<any>>
,但我想返回Observable<any>
答案 0 :(得分:4)
您必须使用flatMap
代替地图:
getData(next?) {
return this.geoCode.getCurrentLocation().flatMap(latlng => { //HERE !
console.log(latlng);
let url = this.API_URL + "?location=" + latlng + "&radius=" + this.radius;
if (next != undefined) {
url = this.API_URL + "?location=" + latlng + "&radius=" + this.radius + "&next=" + next;
}
return this._http.get(url).flatMap(res=>res.json()); //AND HERE !
});
};
这里的精彩内容:Why we need to use flatMap?