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

285
Vistas
Error de Javascript: promiseVariable.then no es un error de función

Soy nuevo en las promesas de JavaScript. Estoy intentando el siguiente código:

 async function handlePromises() { var promise1 = new Promise((resolve, reject) => { console.log(`Creating promise1 object at ${new Date(Date.now()).toISOString()}`); setTimeout(() => { resolve(`Promise 1 resolved after 10 seconds at ${new Date(Date.now()).toISOString()}`); }, 10000); }); let promise2 = new Promise((resolve, reject) => { console.log(`Creating promise2 object at ${new Date(Date.now()).toISOString()}`); setTimeout(() => { resolve(`Promise 2 resolved after 5 seconds at ${new Date(Date.now()).toISOString()}`); }, 5000); }); let promise3 = new Promise((resolve, reject) => { console.log(`Creating promise3 object at ${new Date(Date.now()).toISOString()}`); setTimeout(() => { resolve(`Promise 3 resolved after 3 seconds at ${new Date(Date.now()).toISOString()}`); }, 3000); }); let promise4 = new Promise((resolve, reject) => { console.log(`Creating promise4 object at ${new Date(Date.now()).toISOString()}`); setTimeout(() => { resolve(`Promise 4 resolved after 4 seconds at ${new Date(Date.now()).toISOString()}`); }, 4000); }); return Promise.all([promise1, promise2, promise3, promise4]); } handlePromises();

Ahora estoy tratando de llamar a la función anterior desde la llamada de la siguiente función:

 async function handlePromisesUsingAsync() { let getPromisesArray = handlePromises(); getPromisesArray.then((value) => console.log(value)); }

Esta llamada imprime la salida como se esperaba:

Rendimiento esperado

Pero cuando cambio la definición del método handlePromisesUsingAsync al siguiente código (observe la adición de la palabra clave await):

 async function handlePromisesUsingAsync() { let getPromisesArray = await handlePromises(); getPromisesArray.then((value) => console.log(value)); }

Obtuve el siguiente error:

Error inesperado

¿Por qué esto es tan? ¿La MISMA función no devuelve la MISMA Promesa cumplida en ambas llamadas?

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

0

await esperará a que se resuelva el entonces-capaz en su lado derecho, y luego la expresión completa se evaluará a ese valor resuelto. Por ejemplo

 (async () => { const containsTwo = await Promise.resolve(2); console.log(containsTwo); })();

containsTwo no es una Promesa, es el valor resuelto que la sección de await extrajo de Promise.resolve . containsTwo es solo un número simple.

Del mismo modo, si lo hace

 let getPromisesArray = await handlePromises();

getPromisesArray ya no es una matriz de Promises, sino una matriz de valores de resolución , ya que await la llamada de Promise.all .

Al revisar el código, puede pensar en await como convertir las Promesas en lo que resuelven, sin dejar las Promesas atrás (a menos que algo más ya tenga una referencia a la Promesa creada).

Todo lo que necesitas es

 const results = await handlePromises(); console.log(results);
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