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

142
Vistas
Javascript espera en error de bucle imbricado

Estoy tratando de entender para imbricar bucles en javascript y llamar a una función asíncrona importada desde un script asíncrono y aparece un error. Parece que ReadinglogManager.getReadingLogForAPeriod no se puede llamar con await?

Código principal:

 var myfunction = async function(req, res, next){ students.forEach(function(s) { dateobj.forEach(function(d) { console.log('Date: '+d.toString()) let st= new Date(); const rl = await ReadinglogManager.getReadingLogForAPeriod(st,s.uid ); }); }); }

De ReadinglogManager:

 var getReadingLogForAPeriod = async function(start_date, student_uid){ let db = DatabaseManager.fs.firestore(); let dataset = []; let snapshot = await db.collection('ReadingLog').where('date', '>=', start_date).where('student_uid', '=', student_uid).get(); // dataset = await DatabaseManager.snapshot_to_resultset(snapshot); await snapshot.forEach(doc => { let tdoc=doc.data(); tdoc.uid=doc.id; console.log("DOC: "+JSON.stringify(tdoc)); dataset.push(tdoc); }); return Promise.resolve(dataset); }

Gracias

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Como await solo se puede usar dentro de una función async y la función de devolución de llamada (la parte function(d) {} ) no es asíncrona, por lo que dicho uso dará como resultado un error.

Además, cambiarlo a async function(d) {} tampoco resuelve el problema. Porque forEach no espera que su devolución de llamada sea una función asíncrona y no await su ejecución asíncrona.

Entonces, para tales casos, debe usar un bucle simple en lugar de forEach , como:

 var myfunction = async function(req, res, next){ for(let n = 0;i<students.length;++i){ let s = students[n]; for(let i = 0;i<dateobj.length;++i){ let d = dateobj[i]; console.log('Date: '+d.toString()) let st= new Date(); const rl = await ReadinglogManager.getReadingLogForAPeriod(st,s.uid ); } } }
about 4 years ago · Juan Pablo Isaza 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