Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

96
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda