Premièrement : Vous ne pouvez pas utiliser $.Promise();
car il n'existe pas.
A objet différé est un objet qui peut créer une promesse et changer son état en resolved
o rejected
. Les Deferreds sont typiquement utilisés si vous écrivez votre propre fonction et que vous souhaitez fournir une promesse au code appelant. Vous êtes la fonction producteur de la valeur.
A promesse est, comme son nom l'indique, une promesse de valeur future. Vous pouvez y attacher des callbacks pour obtenir cette valeur. La promesse vous a été "donnée" et vous en êtes l'auteur. récepteur de la valeur future.
Vous ne pouvez pas modifier l'état de la promesse. Seul le code qui créé la promesse peut changer d'état.
Exemples :
1. ( produire ) Vous utilisez des objets différés lorsque vous souhaitez fournir un support de promesse pour vos propres fonctions. Vous calculez une valeur et souhaitez contrôler le moment où la promesse est résolue.
function callMe() {
var d = new $.Deferred();
setTimeout(function() {
d.resolve('some_value_compute_asynchronously');
}, 1000);
return d.promise();
}
callMe().done(function(value) {
alert(value);
});
2. ( avant ) Si vous appelez une fonction qui renvoie elle-même une promesse, vous n'avez pas besoin de créer votre propre objet différé. Vous pouvez simplement retourner cette promesse. Dans ce cas, la fonction ne crée pas de valeur, mais la transmet (en quelque sorte) :
function fetchData() {
// do some configuration here and pass to `$.ajax`
return $.ajax({...});
}
fetchData().done(function(response) {
// ...
});
3. ( recevoir ) Parfois, vous ne voulez pas créer ou transmettre des promesses/valeurs, vous voulez les utiliser directement, c'est-à-dire que vous êtes le destinataire d'une information :
$('#my_element').fadeOut().promise().done(function() {
// called when animation is finished
});
Bien entendu, tous ces cas d'utilisation peuvent également être mélangés. Votre fonction peut recevoir une valeur (provenant d'un appel Ajax par exemple) et calculer (produire) une valeur différente sur la base de cette valeur.
Questions connexes :