从角度2的可观察中返回可观察的

时间:2017-04-13 14:46:12

标签: angular

在以下代码段中。首先,我从返回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>

1 个答案:

答案 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?