Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

153
Visualizações
¿Cómo esperar a que se complete un observable para devolver un valor?

Tengo una función que es la siguiente.

 public getAssemblyTree(id: number) { .... const request = from(fetch(targetUrl.toString(), { headers: { 'responseType': 'json' }, method: 'GET' })); request.subscribe( (response) => { response.json().then(data => { assemblyNodesForTree.push(...this.parseAssemblyTree(data['flat_assembly_graph'])); } ) } ) console.log(assemblyNodesForTree) return assemblyNodesForTree; }

Me di cuenta de que la función devuelve assemblyNodesForTree sin que se complete el observable. Me preguntaba cuál puede ser la forma correcta de hacerlo.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Está pensando en una operación asynchronous para trabajar de forma synchronous . También se refiere a la preguntaProblema que devuelve el valor de RxJS Observable . Explica un tipo de caso de uso similar.


Sugerencia rápida: use fromFetch en lugar de from(fetch)

¿Por qué fromFetch ? - porque utiliza internamente la API de fetch y completa el observable después de que finaliza la llamada a la API.

Te estás suscribiendo dentro de la función getAssemblyTree , que se llamará dentro de un tiempo una vez que finalice ajax. Y antes de eso, simplemente regrese, en lugar de eso, debe devolver la variable assemblyNodesForTree . Eso estará vacío siempre.

Para lidiar con la naturaleza asíncrona, puede canalizar su observable y realizar la operación relevante dentro de la función de operador de map . Al final, devuelva Promise / Observable desde la función getAssemblyTree .

 public getAssemblyTree(id: number) { .... const request = fromFetch({ url: targetUrl.toString(), headers: { 'responseType': 'json' }, method: 'GET' }).pipe( map(async (response) => { const assemblyNodesForTree = []; const data = await response.json() assemblyNodesForTree.push( ...this.parseAssemblyTree(data['flat_assembly_graph']) ); return assemblyNodesForTree; }) ); return request; }

Uso

 async myFunction() { const assemblyNodesForTree = await lastValueFrom(getAssemblyTree(id)) }

El uso de esta función va a ser bastante simple, llame al envoltorio de la función getAssemblyTree(id) con lastValueFrom (). Y tan pronto como termine la llamada a la API fromFetch , se resolverá la promesa.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda