jQuery 1.5 ajoute des "objets différés". Que sont-ils et que font-ils exactement?
la source
jQuery 1.5 ajoute des "objets différés". Que sont-ils et que font-ils exactement?
Objet différé
À partir de jQuery 1.5, l'objet Deferred fournit un moyen d'enregistrer plusieurs rappels dans des files d'attente de rappel autogérées, d'appeler des files d'attente de rappel le cas échéant et de relayer l'état de réussite ou d'échec de toute fonction synchrone ou asynchrone.
Méthodes différées:
Différé en action:
$.get("test.php").done(
function(){ alert("$.get succeeded"); }
);
$.get("test.php")
.done(function(){ alert("$.get succeeded"); })
.fail(function(){ alert("$.get failed!"); });
Et il semble que les rappels de méthode ajax () existants puissent être chaînés plutôt que déclarés dans les paramètres:
var jqxhr = $.ajax({ url: "example.php" })
.success(function() { alert("success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
Exemple de travail tiré d'un article de blog d'Eric Hynds : http://jsfiddle.net/ehynds/Mrqf8/
jqXHR
Depuis jQuery 1.5, la méthode $ .ajax () renvoie l'objet jXHR, qui est un sur-ensemble de l'objet XMLHTTPRequest. Pour plus d'informations, consultez la section jXHR de l'entrée $ .ajax
De JQUERY 1.5 LIBÉRÉ :
OBJETS DIFFÉRÉS
Parallèlement à la réécriture du module Ajax, une nouvelle fonctionnalité a été introduite qui a également été rendue publique: les objets différés . Cette API vous permet de travailler avec des valeurs de retour qui peuvent ne pas être immédiatement présentes (comme le résultat de retour d'une requête Ajax asynchrone). De plus, cela vous donne la possibilité d'attacher plusieurs gestionnaires d'événements (ce qui n'était pas possible auparavant dans l'API Ajax).
De plus, vous pouvez créer vos propres objets différés en utilisant le jQuery.Deferred exposé. Pour plus d'informations sur cette API, consultez la documentation relative aux objets différés .
Eric Hynds a rédigé un bon tutoriel sur l' utilisation des différés dans jQuery 1.5 .
Plutôt que de vous dire ce qu'il fait, je vais vous montrer ce qu'il fait et vous l'expliquer.
Une copie de la source associée de jQuery 1.5 avec des annotations expliquant ce qu'il fait. Je pense que les commentaires sont généralement corrects.
Cela peut être avantageux
la source
Problem solved
. Btw c'est la source 1.5beta je pense qu'il y a quelques changements dans 1.6Corrigez-moi si je me trompe, mais il a récemment cliqué pour moi que c'est essentiellement un exécuteur de tâches asynchrone. La promesse est un contrat de résultat, vous assurant de recevoir ... quelque chose, mais sans garantie de quand vous l'obtiendrez.
la source
En travaillant en Javascript, nous rencontrons une situation où les appels de fonction sont asynchrones. C'est-à-dire que le flux de la fonction calee (disons X) n'attend pas la fonction asynchrone appelée (disons Y). Un exemple typique est lorsque nous appelons un serveur pour récupérer des données d'une base de données ou d'une page HTML. Si ces appels n'étaient pas asynchrones, l'interface utilisateur sera bloquée en attendant que le serveur réponde. Cette nature asynchrone conduit à un problème lorsque vous voulez exécuter des choses dans un ordre, par exemple, vous voulez imprimer quelque chose après que Y (asynchrone) ait terminé l'exécution ou la récupération des données. Ici, jQuery nous fournit un objet Deffered. Fondamentalement, jQuery a pris en charge tout le code standard que nous écrivons généralement pour résoudre cette situation. Voici un exemple simple:
Vous pouvez écrire votre propre fonction différée (asynchrone)
J'espère que cela a aidé.
la source