服务未返回数据

cha*_*eed 3 typescript angular

我有一个服务,其方法如下:

getTotalCountries() {
    this.http.get("country").subscribe((response) => {
      console.log(response.json());//it is displaying all the data which is return by API
      return response.json();           
    });
}
Run Code Online (Sandbox Code Playgroud)

以类似的方式,我在组件中具有如下功能:

public users: any

countCountry() {
    this.count=this.user.getTotalCountries();
    console.log(this.count) //it is not returning any data;
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么它不返回component.ts. 有人可以帮我吗?

Ant*_*sss 5

它没有返回任何内容,因为没有return声明。

它应该是

getTotalCountries(){
    return this.http.get("country");
  }
Run Code Online (Sandbox Code Playgroud)

稍后在代码中的某个地方,当您subscribe发出实际请求时

this.user.getTotalCountries().subscribe(val=>this.count=val));
Run Code Online (Sandbox Code Playgroud)

您必须意识到,在这里您必须处理异步代码,因此这是不按顺序发生的事情。

当您的subscribe应用程序继续并在后台进行实际的 http 调用时。当请求完成时,将调用回调 - 这就是您作为参数提供给 的代码subscribe