Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

179
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda