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

131
Visualizações
Perder referencia de objeto en Javascript con await

Estaba aprendiendo el ciclo de eventos de Js e intenté ejecutar esta función:

 async function foo() { console.log('FIrst'); let a = await new Promise((resolve,reject)=>{ console.log("inside Promise"); resolve(); }) console.log(a); console.log('Second'); } foo(); console.log('Three');

Al ejecutar este código dio salida de la siguiente manera:

 FIrst inside Promise Three undefined Second

No puedo entender por qué perdió su a (la asignación del objeto). He buscado este comportamiento pero no pude entenderlo a partir de las respuestas. ¿Puede alguien explicar cuál es el orden de ejecución que da como resultado esta salida?

about 4 years ago · Santiago Gelvez
3 Respostas
Responde à pergunta

0

Esto se debe a que si está usando await , devuelve a a variable lo que pasó en resolve , por lo que no pasó ningún valor en resole, por eso no está undefined

about 4 years ago · Santiago Gelvez Relatório

0

Cuando await la promesa recién creada, no está asignando la promesa a a , está asignando el valor de resolución de la misma.

 async function foo() { let a = await new Promise((resolve, reject) => { // This is where the value stems from resolve(42); }); console.log(a); } foo();

Si desea mantener la await mientras recupera la referencia, puede separar esos dos pasos:

 async function foo() { let a = new Promise((resolve, reject) => { resolve(42); }); await a; console.log(a instanceof Promise); } foo();

about 4 years ago · Santiago Gelvez Relatório

0

La razón por la que el valor de la promesa no está definido es porque no estableció el valor que debería generar la promesa. Si desea que la promesa devuelva algo que no sea indefinido, coloque una expresión o cadena dentro de la función resolve(). Si desea que la promesa devuelva "Promesa completada" después de que se resuelva y consola. registre el resultado, simplemente use el código

 async function foo() { let a = await new Promise((resolve,reject)=>{ resolve("Promise completed"); }) console.log(a); } foo();
about 4 years ago · Santiago Gelvez 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