如何从订阅模块函数angular 7返回数据

时间:2019-05-13 23:12:11

标签: angular rxjs angular7

我是angular 7的新手,从组件函数返回数据存在问题。可能不是问问题的方法,因为我对角度7的了解较少。

这是我的组件函数

  

getUserStatus

getUserStatus(){
  this.chatService.newUserJoined().subscribe(data=>{
    this.statuses = data;
  });
  return this.statues;
}

chatService从服务获取数据,现在我只想从此函数返回状态,可能是状态为true或false。我需要从我尝试过的该函数返回数据,但它给了我未定义的信息。谢谢大家

1 个答案:

答案 0 :(得分:2)

您不能直接从subscribe返回数据

为什么?

因为您的函数正在使用Observable并且Observable是异步的,即数据将不会立即可用,并且您的函数将不会等待数据并且将完成其执行并返回null,它不应成为处理Observable的方法,因为您将函数的同步调用与异步代码混合在一起。

执行此操作的正确方法是从该函数返回Observable,然后在其上调用subscribe。您可以这样做:

getUserStatus() {
  return this.chatService.newUserJoined()
}

在调用方函数中,您可以像这样

getUserStatus().subscribe(data=>{
    // work with data returned
  });

有关可观察物here

的更多信息