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

105
Views
¿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 answers
Answer question

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 Report

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 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!