Personnellement, j'ai trouvé le rebond plus difficile à comprendre que l' accélérateur .
Comme les deux fonctions vous aident à reporter et à réduire le taux d'exécution. En supposant que vous appelez des fonctions décorées renvoyées par la manette des gaz / anti-rebond à plusieurs reprises ...
- Throttle : la fonction d'origine doit être appelée au plus une fois par période spécifiée.
- Anti - rebond : la fonction d'origine doit être appelée après que l'appelant cesse d'appeler la fonction décorée après une période spécifiée .
J'ai trouvé la dernière partie du debounce cruciale pour comprendre l'objectif qu'elle essaie d'atteindre. J'ai également trouvé une ancienne version de l'implémentation de _.debounce aide à la compréhension (avec la permission de https://davidwalsh.name/function-debounce ).
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
_.debounce = function(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
Une métaphore farfelue, mais peut-être pourrait aussi aider.
Vous avez un ami nommé Chatty qui aime vous parler via IM. En supposant que lorsqu'elle parle, elle envoie un nouveau message toutes les 5 secondes, tandis que l'icône de votre application de messagerie instantanée rebondit de haut en bas, vous pouvez prendre la ...
- Approche naïve : vérifiez chaque message tant qu'il arrive. Lorsque l'icône de votre application rebondit, vérifiez. Ce n'est pas le moyen le plus efficace, mais vous êtes toujours à jour.
- Approche des gaz : vous vérifiez une fois toutes les 5 minutes (quand il y en a de nouvelles). Lorsqu'un nouveau message arrive, si vous avez vérifié à tout moment au cours des 5 dernières minutes, ignorez-le. Vous économisez votre temps avec cette approche, tout en restant dans la boucle.
- Approche anti-rebond : vous connaissez Chatty, elle décompose toute une histoire en morceaux, les envoie dans un message après l'autre. Vous attendez que Chatty termine toute l'histoire: si elle arrête d'envoyer des messages pendant 5 minutes, vous supposeriez qu'elle a terminé, maintenant vous vérifiez tout.