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

128
Visualizações
Detener la ejecución de la función de devolución de llamada del enrutador expreso en el tiempo de espera

Necesito definir un tiempo de espera para rutas específicas en Express para que, en lugar de obtener un error de tiempo de espera predeterminado del servidor, mi API devuelva datos JSON. Lo agrego así al comienzo del enrutador. Obtenga la función de devolución de llamada

 router.get('/', function (req, res, next) { res.setTimeout(10000, function () { res.status(500).json({ error: 'Response Processing Timed Out.' }); }); /* some time-consuming code here */ res.json(result); //this should never happen if timeout occurs });

y eso (parte del tiempo de espera) funciona bien (devuelve un mensaje de error JSON al cliente en el tiempo de espera, como se esperaba).

El problema es que el resto del código aún se ejecuta y cuando llega al método res.json regular - res.json(result) aparece el error ERR_HTTP_HEADERS_SENT (como debería ser, porque intenta hacer otro res.json después de que ya se haya enviado el que contiene el mensaje de error)

Si esa fuera una verificación ordinaria de errores, agregaría una declaración de devolución después de res.json, pero no lo está: está dentro de una función de devolución de llamada y una devolución simplemente finalizaría la devolución de llamada, pero no la función principal (en este caso, el enrutador. obtener la función de devolución de llamada). Sé que podría establecer alguna variable en verdadero cuando se agote el tiempo de espera y luego verificar si es verdadero antes de cualquier res.json, pero me gustaría evitar eso (tengo bastantes líneas res.json en la función, y también Me gustaría evitar ejecutar un código que consume mucho tiempo si el mensaje de error ya se envió)

¿Alguna idea sobre cómo resolver esto? Si res.setTimeout no es la forma correcta, estaré encantado de aprender la forma correcta de hacerlo.

Gracias

about 4 years ago · Juan Pablo Isaza
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