Callbacks

Están costando los callbacks. Me estáis preguntando por ellos, y aquí tengo un callback muy sencillo:

En esta página hay un ejemplo de callback. Existen dos objetos: "Pedidor" y "Respondedor". Perdón por los nombres, pero no se me ha ocurrido nada mejor.

Pedidor hace lo siguiente:

  • Tiene un método llamado "mostrarMensaje".
  • Tiene un método llamado "registrarCallbackEnRespondedor", que como su nombre indica, le dice a "Respondedor" quién será el callback

Respondedor hace lo siguiente:

  • Tiene un método llamado "registrarCallback", que guarda una referencia al callback.
  • Tiene un método llamado "llamarAlCallback", que ejecuta el callback

El botón "Registrar callbak" ejecuta el método "registrarCallbackEnResponder" del objeto "Pedidor".

El botón "Ejecutar callback" ejecuta el método "llamarAlCallback" del objeto "Respondedor"


Haz la siguiente prueba:

  1. Si presionas el botón "Ejecutar callback" antes de presionar "Registrar callback", no ocurre nada.
  2. Presiona el botón "Registrar callback", con lo que "Respondedor" ya tiene una referencia al callback
  3. Para terminar, presiona el botón "Ejecutar callback", y se ejecutará el callback registrado.

El código fuente:

<script type="text/javascript"> var Pedidor = { registrarCallbackEnRespondedor: function(){ Respondedor.registrarCallback(Pedidor.mostrarMensaje); }, mostrarMensaje: function(){ alert("¡El callback ha sido llamado!"); } } var Respondedor = { registrarCallback: function(callback){ this.callback = callback; }, llamarAlCallback: function(){ Respondedor.callback(); } } var btnRegistrarCallback = document.getElementById("registrar"); btnRegistrarCallback.addEventListener("click",Pedidor.registrarCallbackEnRespondedor); var btnEjecutarCallback = document.getElementById("ejecutar"); btnEjecutarCallback.addEventListener("click",Respondedor.llamarAlCallback); </script>