Saltar al contenido

¿Cómo puedo hacer que un programa espere a que se presione un botón en javascript?

Buscamos por todo el mundo online para así traerte la solución a tu dilema, si continúas con preguntas puedes dejar la duda y te respondemos sin falta.

Solución:

Simplemente cree una promesa y almacene la función de resolución fuera de su alcance en una variable global. Luego, deje que el programa espere a que se resuelva la promesa (usando “async” y “await”). La promesa se resuelve con un clic de botón llamando a esa variable global. Usé esta técnica en un programa de ajedrez para esperar la respuesta a una ventana emergente de promoción:

var _promote; /* resolve-function reference */

async function promote_piece(pce, fld, clr) 
  var type;
  (...)
  show_mpw(clr); /* show modal promotion window */
  var promise = new Promise((resolve) =>  _promote = resolve );
  await promise.then((result) =>  type = result );
  if (type === undefined) type = "Q";
  (...)

Entonces, después de crear la promesa, el programa esperará hasta que la ventana emergente la resuelva. La ventana emergente resuelve la promesa de la siguiente manera cuando se cierra:

_promote(type); /* resolve promotion-promise */

NB ¡Tenga en cuenta que en este caso la función de promoción de piezas () también debe llamarse con la palabra clave “esperar”! De lo contrario, el programa lo ejecutará de forma asíncrona y continuará de todos modos.

Debe romper su función en ese punto y agregar otra función para capturar el evento de presión del botón del usuario.

Puede usar Narrative Javascript para introducir el comportamiento de bloqueo y simplificarlo (por lo que no necesita dividir su función en dos partes), pero tenga en cuenta que esta biblioteca ha sido abandonada desde 2013.

Ok, probablemente querías este tipo de cosas, puedes implementar los eventos para marcar el key de la respuesta de Pentium10:

Puede hacer una función llamada, por ejemplo, waitForIt() en la que establece una función setTimeout() que llama al mismo método hasta que se selecciona una variable global. true (establecido por usted presione el botón de acción).

Por ejemplo:



 






Podría llamar al método waitForIt() directamente, pero lo hice para que pueda ver lo que está sucediendo. Lo siento por el lío en el ejemplo, pero no tengo mucho tiempo libre 🙂

Ten en cuenta comunicar este post si lograste el éxito.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *