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

160
Visualizações
cómo esperar a que el usuario haga clic en la variable de registro de la consola

Así que ahora mismo tengo algunos problemas con las funciones async/await y mi objetivo es actualizar una variable cuando el usuario hace clic en un botón. Una vez hecho esto, registro en la consola la variable actualizada. Por ejemplo, en mi código, creo una variable global llamada resultado y luego tengo una función con un detector de eventos para cambiar el valor de la variable cuando se hace clic en el botón, pero cuando registro la variable en la consola, obtengo una variable indefinida y no el valor. Lo configuré. Aquí está el código: archivo JS

 let onlyBtn = document.getElementById("onlyButton"); let result; async function realMain(){ await step(); console.log(result); } async function step(){ return new Promise((resolve) =>{ onlyBtn.addEventListener("click", function(){ result = "nice"; }); resolve(); }); } realMain();

archivo HTML:

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <title>Document</title> </head> <body> <div> <button id="onlyButton">Run</button> </div> <script src="app.js"> </script> </body> </html>

¿Cómo puedo hacer que tenga que esperar la función donde se realiza la actualización, luego registro en la consola la variable actualizada?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Cuando console.log en la función realMain . La variable de result aún no está configurada. El valor se establece cuando onlyBtn recibe un evento de click . Entonces solo necesita imprimir el resultado en la devolución de llamada del evento.

Y asumiendo que su fragmento es su código completo, la lógica para la función asíncrona de step es incorrecta. No está haciendo nada relacionado con async, solo configurando un detector de eventos. Por lo tanto, no debería ser asíncrono en absoluto.

about 4 years ago · Juan Pablo Isaza Relatório

0

su código no activa el evento al hacer clic, y debe pasar el resultado del argumento en la resolución

 let onlyBtn = document.getElementById("onlyButton"); let result; async function realMain() { await step().then((res) => { console.log(res); }); } async function step() { return new Promise((resolve) => { onlyBtn.addEventListener("click", function () { result = "nice"; resolve(result); }); }); } realMain();
 <div> <button id="onlyButton">Run</button> </div>

about 4 years ago · Juan Pablo Isaza Relatório

0

Solo necesita mover su llamada resolve () a su eventListener, mire aquí

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