jQuery 1.5 agrega "Objetos diferidos". ¿Qué son y qué hacen exactamente?
fuente
jQuery 1.5 agrega "Objetos diferidos". ¿Qué son y qué hacen exactamente?
Objeto diferido
A partir de jQuery 1.5, el objeto diferido proporciona una forma de registrar múltiples devoluciones de llamada en colas de devolución de llamada autogestionadas, invocar colas de devolución de llamada según corresponda y transmitir el estado de éxito o falla de cualquier función síncrona o asincrónica.
Métodos diferidos:
Diferido en acción:
$.get("test.php").done(
function(){ alert("$.get succeeded"); }
);
$.get("test.php")
.done(function(){ alert("$.get succeeded"); })
.fail(function(){ alert("$.get failed!"); });
Y parece que las devoluciones de llamada del método ajax () existentes se pueden encadenar en lugar de declarar en la configuración:
var jqxhr = $.ajax({ url: "example.php" })
.success(function() { alert("success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
Ejemplo práctico de la publicación del blog de Eric Hynds : http://jsfiddle.net/ehynds/Mrqf8/
jqXHR
A partir de jQuery 1.5, el método $ .ajax () devuelve el objeto jXHR, que es un superconjunto del objeto XMLHTTPRequest. Para obtener más información, consulte la sección jXHR de la entrada $ .ajax
Desde JQUERY 1.5 LANZADO :
OBJETOS DIFERIDOS
Junto con la reescritura del módulo Ajax, se introdujo una nueva función que también se puso a disposición del público: Objetos diferidos . Esta API le permite trabajar con valores de retorno que pueden no estar presentes de inmediato (como el resultado de retorno de una solicitud Ajax asíncrona). Además, le brinda la capacidad de adjuntar múltiples controladores de eventos (algo que antes no era posible en la API de Ajax).
Además, puede crear sus propios objetos diferidos utilizando jQuery.Deferred. Puede encontrar más información sobre esta API en la documentación del objeto diferido .
Eric Hynds ha escrito un buen tutorial sobre el uso de diferidos en jQuery 1.5 .
En lugar de decirte lo que hace, te mostraré lo que hace y te lo explicaré.
Una copia de la fuente relacionada de jQuery 1.5 con anotaciones que explican lo que está haciendo. Creo que los comentarios son en su mayoría correctos.
Esto puede ser beneficioso
fuente
Problem solved
. Por cierto, esa es la fuente 1.5beta.Creo que hay algunos cambios en 1.6Corrígeme si me equivoco, pero recientemente me di cuenta de que es esencialmente un Ejecutor de tareas asincrónico. La promesa es un contrato de resultado, que garantiza que reciba ... algo, pero sin garantía de cuándo lo obtendrá.
fuente
Mientras trabajamos en Javascript, nos encontramos con situaciones en las que las llamadas a funciones son asincrónicas. Ese es el flujo de la función calee (digamos X) que no espera la función asincrónica llamada (digamos Y). Un ejemplo típico es cuando hacemos llamadas a un servidor para obtener algunos datos de una base de datos o una página HTML. Si esas llamadas no fueron asincrónicas, la interfaz de usuario se bloqueará esperando que el servidor responda. Esta naturaleza asincrónica conduce a un problema cuando desea ejecutar cosas en un orden, por ejemplo, desea imprimir algo después de que Y (asynch) haya terminado de ejecutar o de obtener datos. Aquí jQuery nos proporciona un objeto defferido. Básicamente, jQuery se ha encargado de todo el código repetitivo que normalmente escribimos para resolver esta situación. He aquí un ejemplo sencillo:
Puede escribir su propia función diferida (asincrónica)
Espero que esto haya ayudado.
fuente