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

442
Vistas
res.send() se ejecuta antes de la llamada de función asíncrona en express.js

Resumen: crear mi propia API que devuelve la hora de la época e implica el uso de un servidor express.js, pero está ejecutando res.send() antes de la llamada a la función. Hice referencia a esta página, pero no ayudó. Esto es lo que tengo:

 app.get('/timestampAPI', async (req, res,) => { try { let finalResult = await getTimeStamp(); res.send({ something: finalResult }); } catch (error) { console.log(error); } });

Comenzará a ejecutar la función getTimeStamp(), y antes de que termine, ejecuta la función res.send() que aparece como '{}' porque finalResult no tiene un valor. getTimeStamp() es una función asíncrona. No estoy seguro de lo que estoy haciendo mal.

Editar: función getTimeStamp() :

 async function getTimeStamp() { await axios.get('https://showcase.api.linx.twenty57.net/UnixTime/tounixtimestamp?datetime=now') .then(response => { // also used console.log(response.data.UnixTimeStamp), which returns the timestamp return response.data; }) .catch(error => { var errorMessage = error.response.statusText; console.log(errorMessage); }); }

Otra edición: sí, la API a la que se hace referencia anteriormente devuelve el tiempo de época actual, pero CORS está bloqueando mi otro sitio para que no acceda directamente, por lo que no puedo usarlo en ese sitio, por lo que estoy usando node.js para para que pueda permitirme acceder a él a través de mi programa node.js. No podía pensar en otra manera

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

  • el valor de retorno del método then no regresa de la función getTimeStamp , debe escribir su código en el patrón de resolve o using esperar como se muestra a continuación

intente esto, asegúrese de escribir el nombre de campo correcto en el objeto de respuesta

 async function getTimeStamp() { try{ const res = await axios.get('https://showcase.api.linx.twenty57.net/UnixTime/tounixtimestamp?datetime=now') return res.data }catch(error){ throw error }
about 4 years ago · Santiago Trujillo Denunciar

0

Como alternativa a la respuesta de Mohammad, también puede usar el resultado de la función getTimeStamp como una promesa y puede resolver su problema.

 async function getTimeStamp() { return new Promise((resolve, reject) => { axios.get('https://showcase.api.linx.twenty57.net/UnixTime/tounixtimestamp?datetime=now') .then(response => { // also used console.log(response.data.UnixTimeStamp), which returns the timestamp resolve(response.data); }) .catch(error => { var errorMessage = error.response.statusText; console.log(errorMessage); reject(error); }); }) }

O también reemplazaría await con return en la función getTimeStamp en su código si no desea devolver la promesa (lo cual no recomiendo). También debe arrojar el error en el bloque catch que se genera en la función getTimeStamp para detectar el error en el bloque try-catch que usa para llamar a app.get(...).

about 4 years ago · Santiago Trujillo 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