jQuery deferreds y promises
Es común pensar en jQuery como una librería que ofrece herramientas potentes para trabajar y manipular el DOM, como son los selectores, efectos y utlidades. Y por supuesto también es conocido por su facilidad para manejar las peticiones AJAX.
Pero no debemos olvidar que los también incluye potentes utilidades y soluciones a problemas del trabajo con tareas asíncronas.
Una de estas soluciones son los deferreds y promises. ¿Los has utilizado alguna vez?
Un deferred es una tarea pendiente de ser resuelta o rechazada por el propietario. El promise se genera a partir de un deferred y se le notifica cuando la tarea asociada se resuelve o bien se rechaza.
1 2 3 4 5 6 7 |
function wait(time) { var dfd = $.Deferred(); // Objeto deferred setTimeout(() => dfd.resolve(), time || 1000); // Se resuelve la tarea return dfd.promise(); // Se devuelve una promise del deferred } wait(5000).then(() => console.log("Promise resuelto"); |
Sobre una promise se pueden ejecutar métodos del tipo .then(), .done(), .fail(), .always(),…
Otra importante utilidad es $.when() que nos permite saber cuándo terminan varias tareas asíncronas:
1 2 3 4 5 |
$.when( $.ajax("/order/pizza.php"), $.ajax("/order/burger.php"), wait(3000) ).then(dinnerIsReady); |
Los enlaces oficiales de jQuery: https://api.jquery.com/jQuery.Deferred/
Dejo un vídeo donde explican bastante bien todo esto:
Dejar un comentario
¿Quieres unirte a la conversación?Siéntete libre de contribuir