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

156
Views
Cómo devolver un valor de una función asíncrona cuando hay una consulta dentro de un for

Estoy tratando de devolver un valor después de que se haya completado un bucle for, el bucle for está dentro de una función asíncrona. Dentro del bucle, hay una consulta que se inserta en la base de datos.

La función funciona bien, pero cuando uso cartero, la respuesta vuelve vacía (aunque los valores se hayan insertado en la base de datos)

Así es como llamo a la función:

 insertarPracticas(turno_id,req.body.lista_codigos_practicas, queryInsertarPracticas) .then( result=> { res.status(200).json({ "Practicas Agregadas": result }) } )

Y aquí está la función:

 async function insertarPracticas(turno_id, req, queryInsertarPracticas){ //practicasAgregadas=""; return new Promise((resolve, reject) => { for (let i=0; i< req.length; i++){ connection.query( queryInsertarPracticas, [turno_id, req[i]],(error2, row2) => { if (error2) { console.log("Error al insertar turno detalle (prácticas): "+req[i] +" "+ error2); practicasNoAgregadas += req[i] + "-"; }else{ console.log("Turnos detalle agregados "+req[i]); practicasAgregadas += req[i] + "-"; console.log("practicas "+practicasAgregadas); } }); console.log("en for "+practicasAgregadas); } resolve(practicasAgregadas) // Or of there was an error reject("error"); })

Lo que sucede aquí es que la función no esperará a que finalice la consulta de conexión, incluso si inserta valores en la base de datos, en Postman obtengo el primer resultado, que está vacío:

ingrese la descripción de la imagen aquí

Pero tengo los valores insertados en mi base de datos.

¿Cuál es la forma correcta de manejar esto? Intenté usar map en lugar de for, y ahora lo intento con promesa, pero no estoy seguro de estar usándolo correctamente.

Aquí está la consola, donde se puede ver que el archivo console.log("en for" + practicasAgregadas) regresa vacío, cuando debería tener algunos valores.

about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

después de su mapa, simplemente use:

 await Promise.all(yourArray);
about 4 years ago · Santiago Gelvez Report

0

No sé cómo creó su archivo de conexión, pero debe cambiarlo a una función asíncrona y esperar la conexión. consulta

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