首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从订阅服务器对象获取数据?

如何从订阅服务器对象获取数据?
EN

Stack Overflow用户
提问于 2021-04-19 05:26:19
回答 3查看 151关注 0票数 0

在下面发布的代码中,我有一个返回订阅服务器的方法。我想要做的是从订阅服务器获取或检索该数据。换言之,我想做以下几件事:

代码语言:javascript
复制
console.log(getRouteGeometryFromAlexandriaToAmsterdam())

而该log语句必须显示

代码语言:javascript
复制
data["features"][0]['geometry']

当我只使用上面提到的log语句时,我会收到一个订阅者对象。请告诉我如何从订阅者对象中获取数据。

代码语言:javascript
复制
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']);
        });
}
EN

回答 3

Stack Overflow用户

发布于 2021-04-19 05:48:02

在订阅回调中返回任何值总是不可取的--原因是可观测值是异步的,但是代码是同步的。

您确实纠正了您的方法--实际上,您只需要在组件中订阅(因为您标记为角),而不是您的服务。就像这样:

代码语言:javascript
复制
public getRouteGeometryFromAlexandriaToAmsterdam() {
    return this.httpClient.get("https://api.openrouteservice.org/v2/directions/.....")

在您的组件中,执行以下操作:

代码语言:javascript
复制
this.getRouteGeometryFromAlexandriaToAmsterdam()
    .subscribe(data=>{
        console.log("getRouteGeometryFromAlexandriaToAmsterdam = " , data["features"][0]['geometry']);
    })
票数 1
EN

Stack Overflow用户

发布于 2021-04-19 05:39:08

您可以使用如下其他函数来处理响应:

代码语言:javascript
复制
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());
票数 0
EN

Stack Overflow用户

发布于 2021-04-19 05:39:25

您将在方法中返回一个可观察的,这意味着您应该对它进行subscribe以获得它的值。

您可以返回data而不是http service

代码语言:javascript
复制
public getRouteGeometryFromAlexandriaToAmsterdam() {
    this.httpClient.get("https://api.openrouteservice.org/v2/directions/.....")
        .subscribe((data)=> {
            console.log(data);
            return (data);
        });
}

或者添加另一种方法:

代码语言:javascript
复制
public getRouteGeometryFromAlexandriaToAmsterdam() {
    return this.httpClient.get("https://api.openrouteservice.org/v2/directions/.....")
}

  getData(){
   this.getRouteGeometryFromAlexandriaToAmsterdam().subscribe(res => {
    console.log(res)})
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67156372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档