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

295
Visualizações
¿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 Respostas
Responde à pergunta

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 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