Búsqueda de sitios web

angular - El servicio no está devolviendo los datos


Tengo un servicio con un método como el siguiente:

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();           
    });
}

De manera similar, tengo una función en el componente como se muestra a continuación:

public users: any

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

No puedo averiguar por qué no está devolviendo datos en component.ts. ¿Alguien podría ayudarme, por favor?

Respuesta #1

No está devolviendo nada porque no hay una declaración return.

Debería ser

getTotalCountries(){
    return this.http.get("country");
  }

y más adelante en algún lugar del código, cuando subscribe hagas la solicitud real

this.user.getTotalCountries().subscribe(val=>this.count=val));

Debes ser consciente de que aquí tienes que lidiar con código asincrónico, por lo que eso es algo que ocurre fuera de orden.

Cuando usted subscribe, la aplicación continúa y la llamada HTTP real se realiza en segundo plano. Cuando la solicitud termina, se invoca la función de retorno de llamada, y ese es el código que usted proporciona como argumento a subscribe.

Respuesta #2

Debería ser:

return this.http.get('country').subscribe { .......}

Artículos relacionados