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

178
Visualizações
¿Cómo puedo ejecutar los cambios de reloj de forma asíncrona? NodeJS Mongoose

Durante los últimos 2 días he estado luchando con esto. Quiero estar atento a los cambios en una colección en particular. Toda la lógica de estos cambios es asíncrona. Traté de hacer que la función de devolución de llamada de EventEmitter fuera asíncrona, pero aún funciona de manera síncrona.

Ejemplo de pseudocódigo:

 const someLogicFunction1 = async () => { // some logic here } const someLogicFunction2 = async () => { // some logic here } const collectionEventEmitter = Collection.watch(); collectionEventEmitter.on('change', async (change) => { await someLogicFunction1(); await someLogicFunction2(); // has to wait for first function to finish });

Como expliqué anteriormente, probé este enfoque pero aún se ejecuta de forma sincrónica. La segunda función generalmente tiene que esperar a que la primera función termine su tarea para que todo el código funcione correctamente.

EDITAR: Por lo que he encontrado, parece que la función de devolución de llamada primero obtiene todos estos objetos de evento de parámetro de "cambio" y luego ejecuta el código. Lo que necesito en realidad es ejecutar el código para cada parámetro de evento de "cambio", no para todos a la vez.

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

0

Una solución es hacer que someLogicFunction1() devuelva una promesa y llame a someLogicFunction2(); en entonces de la primera función, así:

 await someLogicFunction1() .then(function(){ someLogicFunction2(); });

Solo necesita modificar someLogicFunction1(); como esto:

 someLogicFunction1( ) { return new Promise( async function( resolve, reject ) { // Do your stuff here }); // eo promise }

No olvide resolve() en la función someLogicFunction1 .

 resolve();

También puede reject() en someLogicFunction1 y detectar el error cuando llama a esta función.

 reject();

Puede pasar un argumento para resolver y rechazar y obtenerlo en su llamada.

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