es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo extraer datos de un Observable

Estoy intentando entender cómo extraer datos de un objeto de tipo Observable, después de haber investigado encontré principalmente dos soluciones. La primera es subscribe (que no funciona en mi caso o que estoy usando mal), o map que ya no existe. Especifico que estoy utilizando Nest.

Mi objetivo aquí es poder devolver directamente la variable this.followers llena con los datos de la respuesta.

Aquí está mi código.

import { HttpService } from '@nestjs/axios';
import { Injectable } from '@nestjs/common';
import { GithubFollower } from './../../../../shared/github.models';

@Injectable()
export class GithubService {
  private followers: GithubFollower[];

  constructor(private httpService: HttpService) {}

  getFollowers(id: string): GithubFollower[] {
    this.httpService.get<githubfollower[]>(`https://api.github.com/users/${id}/followers`)
      .subscribe(data => {
        this.followers = data.data // this.followers = mis datos
        console.log(this.followers); // imprime mis datos
      });
    console.log("aquí", this.followers); // imprime "aquí undefined"
    return this.followers; // this.followers = []
  }
}

¿Cómo extraer datos de un Observable?</githubfollower[]>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para extraer datos de un Observable en NestJS, puedes usar el método toPromise() en lugar de subscribe(). Esto te permitirá esperar a que los datos sean recuperados desde la API antes de retornarlos desde la función. Aquí hay un ejemplo de cómo implementar esto:

    En este ejemplo, usamos la sintaxis async/await para esperar la respuesta de la API. El método toPromise() es llamado en el Observable retornado por get(), el cual retorna una Promise que se resuelve con los datos cuando están disponibles. La propiedad data de la respuesta es retornada desde la función.

    Ten en cuenta que ya no necesitamos declarar una propiedad privada followers en la clase, ya que simplemente podemos retornar los datos directamente desde la función.

Comments are closed.