Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

298
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!