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

179
Vistas
javascript: no se puede ejecutar la promesa de la matriz una por una

Descubrí que no puedo resolver las promesas una por una.

este es mi codigo

 const promises = mkt.map((marketItem) => { return context.program.account.chain .fetch(marketItem[0].instrument) .then((instrumentRes) => { return Test(context, marketItem[0]).then( testResult => { return Promise.all([ functionA(), functionB(), ]).then((result) => { return result }); } ); }); }); console.log(promises) for (let i=0; i < promises.length; i++) { const val = await promises[i](); console.log(val); }

error

 promises[i]() is not a function

¿Por qué? ¿Cómo puedo solucionarlo?

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

0

promises[i]() is not a function

Correcto, esto se debe a que las promises son una matriz de objetos Promise , no funciones.

Puede volcar esta matriz de promises en Promise.all y esperar a que se resuelvan todas.

 Promise.all(promises) .then(resolvedPromises => { // handle array of resolved promises });

pero estoy trabajando en algunas cosas de actualización en tiempo real. Si uso Promise.all arrojará un error Too many request , así que quiero hacerlo uno por uno para ver el efecto

Para esto, creo que desea iterar en la matriz mkt y esperar a que se resuelva cada Promesa creada. Refactorice la devolución de llamada de asignación en una función independiente que puede invocar manualmente dentro del ciclo for, esperando que se establezca la Promesa.

 const request = (marketItem) => { return context.program.account.chain .fetch(marketItem[0].instrument) .then((instrumentRes) => Test(context, marketItem[0])) .then(testResult => Promise.all([functionA(), functionB()])) .then((result) => result); } for (let i=0; i < mkt.length; i++) { try { const val = await request(mkt[i]); console.log(val); } catch(error) { // handle any error } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente eliminar el () de la llamada en espera ya debería funcionar.

 const val = await promises[i];

Sin embargo, tenga en cuenta que todas las promesas ya se "comenzaron" (no conozco una palabra mejor para eso) en ese momento y solo está recuperando los resultados o un error con la llamada en await .

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