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

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

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 Report

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