La documentation de jQuery pour les deux énonce fondamentalement la même chose, donc je me demandais s’il y avait une différence majeure entre les deux Merci!
La documentation à ce sujet est vraiment très mauvaise, alors voici ce que j’ai trouvé en étudiant le code source :
lock
empêche uniquement les futurs appels d’ fire
, mais n’empêche pas l’ add
fonctions.
Voici un rapide aperçu des méthodes:
empty
– Supprime tous les rappels enregistrés jusqu’à présent. lock
– Empêche d’autres appels à être fire
, mais permet d’ add
davantage de rappels. disable
– Empêche les appels suivants à fire
et à add
. Pour comprendre tout cela, commençons par une explication de l’indicateur de memory
:
Si l’object de rappel est construit avec l’indicateur de memory
, il gardera une trace du dernier appel déclenché et tout rappel ajouté plus tard sera immédiatement appelé. Voici un exemple :
var callbacks = $.Callbacks('memory'); callbacks.add(function(){ console.log('first'); }); callbacks.fire(); callbacks.add(function(){ console.log('second'); });
Cela va également se connecter en second , même si elle a été ajoutée après l’appel du fire
.
Si vous le disable
, il effacera complètement la mémoire. Voici un autre exemple :
var callbacks = $.Callbacks('memory'); callbacks.add(function(){ console.log('first'); }); callbacks.fire(); callbacks.disable(); callbacks.add(function(){ console.log('second'); }); callbacks.fire();
Cela ne fera que se connecter en premier , car les callbacks
ont été désactivés avant l’ajout de la deuxième fonction.
Toutefois, si vous utilisez plutôt le lock
, les fonctions ajoutées ultérieurement seront appelées. Voici un autre exemple :
var callbacks = $.Callbacks('memory'); callbacks.add(function(){ console.log('first'); }); callbacks.fire(); callbacks.lock(); callbacks.add(function(){ console.log('second'); }); callbacks.fire();
Cela vous connectera également en second lieu , mais seulement une fois; étant donné que l’object a été lock
, tout appel au fire
sera ignoré.