Javascript: Ejecuciones asíncronas

Javascript a diferencia de otras tecnologías tiene solo un hilo de ejecución cuyo stack de llamadas se ejecuta de manera síncrona, es decir, las peticiones de ejecución se realizan una detrás de otra en plan FIFO (first in, first out).

Por ejemplo:
See the Pen Ejemplo de ejecución síncrona by Gabriel Cuesta Arza (@gabicuesta) on CodePen.
Esta manera de funcionar provoca atascos ya que hasta que no se termina de ejecutar una tarea no se pasa a la siguiente.

Para evitar este problema se implementan las ejecuciones asíncronas, de tal manera que podamos ejecutar varias tareas a la vez sin que una tarea paralice las otras.

Por ejemplo, si en una web tenemos que descargar una foto o hacer una petición a un web service no por ello debemos dejar el resto de procesos parados.

En javascript la manera ideal de hacer una ejecución asíncrona es utilizando las promesas.

Pongo un ejemplo:
See the Pen Ejemplo de promesa by Gabriel Cuesta Arza (@gabicuesta) on CodePen.
En la promesa se lanza la ejecución de una o varias instrucciones y una vez se termina la ejecución se recibe de nuevo el control del flujo tanto si ha habido éxito como si ha habido error para procesar la ejecución.

Hay otras maneras para ejecutar código javascript de manera asíncroma utilizando setTimeout o callbacks, pero desde que aparecieron las promesas no les veo mucho sentido.

Comentarios