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

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

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 Report

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 Report

0

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

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!