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

98
Vistas
¿Por qué esta función aysnc no devuelve implícitamente una promesa?

Leí en esta pregunta de desbordamiento de pila async/await devuelve implícitamente la promesa? que:

"Una función asíncrona siempre devolverá una promesa. Si no devuelve explícitamente una promesa, el valor que devuelve se incluirá automáticamente en una promesa".

Entonces, ¿por qué mi función getData2() continuación devuelve undefined ?

 const getData = async() => { return new Promise(resolve => { setTimeout(() => { resolve('this is the data'); }, 2000); }); }; const getData2 = async() => { setTimeout(() => { return 'this is the data without an explicit promise'; }, 1000); }; (async() => { console.log(await getData2()); // DOES NOT WORK: displays 'undefined' immediately console.log(await getData()); // WORKS: waits one second and displays data })();

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

0

getData2 devuelve una Promesa, pero la está await , lo que extrae el valor de resolución de la Promesa.

 console.log(await getData2());

se convierte en

 console.log(await promiseThatResolvesToUndefined);
 console.log(undefined);

Si no lo await , verás la Promesa.

 const getData2 = async () => { setTimeout(() => { return 'this is the data without an explicit promise'; }, 1000); }; (async () => { console.log(getData2()); })();

El valor de resolución no está undefined porque no se devuelve nada dentro del cuerpo de getData2 .

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema no es con async sino con el uso de return dentro de una función interna (en este caso, una lambda), que regresa desde esa función interna ( no la función externa), y setTimeout luego ignora ese valor de retorno. La forma correcta de hacer esto es getData (pero sin la palabra clave async que agrega una segunda capa de Promise ).

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