使用 get / http / subscribe 的功能不起作用,为啥? [复制]

Posted

技术标签:

【中文标题】使用 get / http / subscribe 的功能不起作用,为啥? [复制]【英文标题】:function with get / http / subscribe dont worked, why? [duplicate]使用 get / http / subscribe 的功能不起作用,为什么? [复制] 【发布时间】:2020-05-11 00:03:22 【问题描述】:

这个带有get/http/subscribe的函数没有返回正确的值,它返回undefined,为什么?`

function_one() 
    let text = this.getData();
    console.log(' Here text is undefined --> ', text);
  

  getData() 
    this.http.get("assets/img/tutorial/tutorialenus.JSON").subscribe
      (response => 
        console.log(' Here response = The simple text', response);
        return response;
      
      );
  

【问题讨论】:

getData() 中没有返回语句,您从订阅回调返回 response 谢谢你们 - 我阅读了所有的帖子并为我工作 【参考方案1】:

没有看到其余的代码:我会推荐这个:

getData() 
  //return observable
  return this.http.get("assets/img/tutorial/tutorialenus.JSON");


function_one() 
  //subscribe to and log observable response data
  this.getData().subscribe
  (response => 
    console.log(' Here response = The simple text', response);
  

【讨论】:

没关系!工作...谢谢【参考方案2】:

HTTP get 函数是异步的。所以它不会将数据返回给 function_one()。要解决这个问题,不要让 function_one() 调用 getData(),而是让 getData() 调用 function_one()。

像这样

  function_one(text)         
    console.log(' Here text is undefined --> ', text);
  

  getData() 
    this.http.get("assets/img/tutorial/tutorialenus.JSON").subscribe
      (response => 
        console.log(' Here response = The simple text', response);
        this.function_one(response)
      );
  

【讨论】:

【参考方案3】:

您需要返回您的 observable 并订阅它才能获得价值。

试试这个:

function_one() 
    this.getData().subscribe((text) => 
        // Do something with text
        console.log('Your text will appear', text);
    );



getData() 
    return this.http.get("assets/img/tutorial/tutorialenus.JSON");

【讨论】:

以上是关于使用 get / http / subscribe 的功能不起作用,为啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

无法使用.subscribe方法在本地存储

Rx Subscribe OnComplete 触发但无法使用数据

使用body.json()解析来自http.get()的响应时出错

RXJS可观察的方法.pipe()和.subscribe()之间的差异

添加报头,以在角6 http.get

使用Getu Transient和Wpu Remoteu Get获取Feedburner计数