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

292
Vistas
¿Detener/interrumpir el bucle desde el lado del servidor con el lado del cliente?

Tengo un trabajo asíncrono dentro del bucle desde el lado del servidor:

 const contacts = []; for(contact of contacts){ (async () => { await MailService.sendMessage(contact, 'message body') })() }

Quiero romper ese bucle usando el lado del cliente, lo que hago es:

1 . desde el lado del servidor, antes de enviar el mensaje, verifique si el estado de la transmisión es en proceso o está detenido , si está detenido, entonces interrumpa el bucle.

2 . desde el lado del cliente, si quiero detener la transmisión (detener el bucle), necesito actualizar el valor de transmisión del proceso a detenido.

Entonces, mi código debería ser:

lado del servidor:

 const contacts = []; for(contact of contacts){ (async () => { const currentBroadcast = await Broadcast.findById('id') if(currentBroadcast.status === 'stopped') break; await MailService.sendMessage(contact, 'message body') })() }

lado del cliente:

 document.getElementById('stop').addEventListener('click', () => { fetch('url/broadcast/stop/:id') })

funciona. ¿Pero eso no haría que el servidor fuera pesado? Porque en cada ciclo tengo que verificar en la base de datos.

¿Hay alguna otra manera que pueda hacer para detener el bucle? sin tener que registrarse en la base de datos.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No necesita una base de datos para eso, solo necesita actualizar un valor que se puede ver en el código del servidor. Podría tener una ruta Express simple que agregue ID de sesión de cliente a una colección, que se actualiza cuando se llama a la ruta. Luego, simplemente haga que su bucle verifique si ese cliente envió dicha solicitud.

Con las sesiones , podría tener algo como, con una ruta:

 const stoppedBroadcastSessionIds = new Set(); app.post('/stopbroadcast', function (req, res) { stoppedBroadcastSessionIds.add(req.session.id); })

y luego hacer

 for(const contact of contacts){ if (stoppedBroadcastSessionIds.has(req.session.id)) break; await MailService.sendMessage(contact, 'message body') }
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