Quelle est la différence entre différé et promis ?
promesse
Une promesse est un objet renvoyé par une fonction asynchrone. Lorsque vous souhaitez écrire vous-même une telle fonction, vous devez utiliser un différé.
var promise = $.ajax({ url: "/myServerScript" }); promise.done(mySuccessFunction); promise.fail(myErrorFunction); var promise = $.ajax({ url: "/myServerScript" }); promise.then(mySuccessFunction,myErrorFunction);
Les avantages de l'utilisation des Promesses sont les suivants :
Vous pouvez appeler les fonctions done() et fail() plusieurs fois et utiliser différentes fonctions de rappel. Peut-être avez-vous une fonction de rappel pour arrêter l'animation, une pour lancer une nouvelle requête AJAX et une pour afficher les données reçues à l'utilisateur.
var promise = $.ajax({ url: "/myServerScript" }); promise.done(myStopAnimationFunction); promise.done(myOtherAjaxFunction); promise.done(myShowInfoFunction); promise.fail(myErrorFunction);
Même une fois l'appel AJAX terminé, vous pouvez toujours appeler les fonctions done() et fail(), et la fonction de rappel peut être exécutée immédiatement. Il n'y a pas de confusion de variables entre les différents états. Lorsqu'un appel AJAX se termine, il conserve un statut de réussite ou d'échec et ce statut ne change pas.
Vous pouvez fusionner des promesses. Parfois, vous devez effectuer deux requêtes AJAX en même temps et souhaitez appeler une fonction lorsque les deux requêtes AJAX réussissent. Pour accomplir cette tâche, vous devez utiliser une nouvelle fonction $.when() :
var promise1 = $.ajax("/myServerScript1"); var promise2 = $.ajax("/myServerScript2"); $.when(promise1, promise2).done(function(xhrObject1, xhrObject2) { // 处理两个XHR对象 });
différé
Pour faire simple, l'objet différé est la solution de fonction de rappel de jQuery. En anglais, defer signifie « retard », donc la signification d'un objet différé est de « retarder » l'exécution jusqu'à un certain point dans le futur.
Un objet différé peut faire la même chose qu'un objet promis, mais il a deux fonctions pour déclencher les fonctions done() et fail().
Un objet différé a une fonction solve() pour gérer un résultat réussi et exécuter les fonctions liées à done(). La fonction rejet() est utilisée pour gérer les résultats ayant échoué et exécuter les fonctions liées à fail().
Vous pouvez fournir des paramètres aux fonctions résoudre() et rejeter(), puis ils seront tous deux transmis aux fonctions de rappel liées à done() et fail().
Résumé
L'ajax de jQuery consiste à renvoyer un objet de promesse, qui contient les méthodes done(), fail() différé est le processus de retour de cet objet de promesse.