Feb 14, 2014

setTimeout() vs $.Deferred()

Este el típico problema en el cual utilizaba un setTimeout(). Estaba obligado a esperar que se ejecutara la linea superior para poder hacer uso del nodo DOM (en este caso “lightbox_content_user”).

$(“#wrap_all).prepend(<?php echo json_encode($lightbox) ?\>));

setTimeout(function(){
	$(.lightbox_content_user).css(width, container_width - 80);
}, 500);

Ahora estoy comenzando a utilizar un objeto jQuery llamado Deferred. Básicamente hace lo mismo, pero de forma mas limpia. Y así evitamos la famosa Callback Pyramid of Doom.

var dfd = $.Deferred();
dfd.done($(“#wrap_all).prepend(<?php echo json_encode($lightbox) ?\>);
dfd.resolve($(.lightbox_content_user).css(width, container_width - 80));