在下面发布的代码中,我有一个返回订阅服务器的方法。我想要做的是从订阅服务器获取或检索该数据。换言之,我想做以下几件事:
console.log(getRouteGeometryFromAlexandriaToAmsterdam())而该log语句必须显示
data["features"][0]['geometry']当我只使用上面提到的log语句时,我会收到一个订阅者对象。请告诉我如何从订阅者对象中获取数据。
码
public getRouteGeometryFromAlexandriaToAmsterdam() {
return this.httpClient.get("https://api.openrouteservice.org/v2/directions/.....")
.subscribe((data)=> {
console.log("getRouteGeometryFromAlexandriaToAmsterdam = " , data["features"][0]['geometry']);
return (data["features"][0]['geometry']);
});
}发布于 2021-04-19 05:48:02
在订阅回调中返回任何值总是不可取的--原因是可观测值是异步的,但是代码是同步的。
您确实纠正了您的方法--实际上,您只需要在组件中订阅(因为您标记为角),而不是您的服务。就像这样:
public getRouteGeometryFromAlexandriaToAmsterdam() {
return this.httpClient.get("https://api.openrouteservice.org/v2/directions/.....")在您的组件中,执行以下操作:
this.getRouteGeometryFromAlexandriaToAmsterdam()
.subscribe(data=>{
console.log("getRouteGeometryFromAlexandriaToAmsterdam = " , data["features"][0]['geometry']);
})发布于 2021-04-19 05:39:08
您可以使用如下其他函数来处理响应:
public getRouteGeometryFromAlexandriaToAmsterdam() {
return this.httpClient.get("https://api.openrouteservice.org/v2/directions/.....")
.subscribe((data)=> {
this.handleResponse(data["features"][0]["geometry"]);
});
}
public handleResponse(res) {
return res;
}
console.log(getRouteGeometryFromAlexandriaToAmsterdam());发布于 2021-04-19 05:39:25
您将在方法中返回一个可观察的,这意味着您应该对它进行subscribe以获得它的值。
您可以返回data而不是http service
public getRouteGeometryFromAlexandriaToAmsterdam() {
this.httpClient.get("https://api.openrouteservice.org/v2/directions/.....")
.subscribe((data)=> {
console.log(data);
return (data);
});
}或者添加另一种方法:
public getRouteGeometryFromAlexandriaToAmsterdam() {
return this.httpClient.get("https://api.openrouteservice.org/v2/directions/.....")
}
getData(){
this.getRouteGeometryFromAlexandriaToAmsterdam().subscribe(res => {
console.log(res)})
}https://stackoverflow.com/questions/67156372
复制相似问题