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

366
Visualizações
Cómo esperar completamente RxJS Observable

Estoy usando una biblioteca que usa RxJS y soy nuevo en RxJS, así que, aunque busqué en Google e intenté hacer mi propia investigación, todavía estoy un poco perdido.

Esta biblioteca tiene una función que devuelve un observable. Ese observable realmente solo devuelve un solo mensaje cuando está suscrito, pero necesito esperar los datos contenidos en ese mensaje antes de que mi código pueda continuar.

He leído sobre el encadenamiento de observables y todo eso, pero lo que realmente busco es un patrón asíncrono/en espera muy simple. Noté que hay un .toPromise() en el observable que puede esperar, lo cual está bien, sin embargo, parece que la promesa se resuelve antes de la ejecución completa de mi función next(), lo que resulta en un problema de tiempo con las variables que era ajuste.

¿Eso suena correcto? ¿Cómo puedo simplemente esperar un observable Y todos sus efectos secundarios, como las llamadas a next()?

Lo que terminé haciendo, que funciona de manera confiable pero parece exagerado, es envolver una promesa como se demuestra a continuación. ¿Hay una manera más sucinta?

 const result = await new Promise((resolve, reject) => { const s = jupyter.sessions.create(this._serverConfig, { kernel: {name: this._kernelName}, name: this._sessionName, path: '/path', type: 'notebook' }); s.pipe(take(1)).subscribe({ next(x) { resolve({sessionId: x.response.id, kernelId: x.response.kernel.id}); }, error(err) { reject(err); }, }); }); this._sessionId = result.sessionId; this._kernelId = result.kernelId;

Para completar, este es el código anterior que NO funciona. En este código, la espera se completa en una condición de carrera con la siguiente función. Es decir, aleatoriamente, tanto sessionId como kernelId no están definidos según el mensaje de registro que sigue a la espera.

 s.subscribe({ next(x) { console.log(x); sessionId = x.response.id; kernelId = x.response.kernel.id; }, error(err) { console.error('Got an error from kernel creation:') console.error(err); }, }) .add(() => { console.log('Connection subscription exiting'); }); await s.toPromise(); console.log(`Found session id ${sessionId} and kernel id ${kernelId}`);
about 4 years ago · Santiago Gelvez
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