Personalmente, encontré que el rebote es más difícil de comprender que el acelerador .
Como ambas funciones le ayudan a posponer y reducir la tasa de ejecución. Suponiendo que está llamando a funciones decoradas devueltas por el acelerador / antirrebote repetidamente ...
- Acelerador : la función original se llamará como máximo una vez por período especificado.
- Debounce : se llama a la función original después de que la persona que llama deja de llamar a la función decorada después de un período específico .
Encontré que la última parte de rebote es crucial para comprender el objetivo que está tratando de lograr. También encontré una versión anterior de la implementación de _.debounce que ayuda a la comprensión (cortesía 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);
};
};
Una metáfora descabellada, pero quizás también podría ayudar.
Tienes una amiga llamada Chatty a la que le gusta hablar contigo por mensajería instantánea. Suponiendo que cuando habla, envía un nuevo mensaje cada 5 segundos, mientras que el ícono de la aplicación de MI rebota hacia arriba y hacia abajo, puede tomar el ...
- Enfoque ingenuo : verifique cada mensaje siempre que llegue. Cuando el ícono de su aplicación rebota, verifique. No es la forma más efectiva, pero siempre estás actualizado.
- Enfoque del acelerador : verifica una vez cada 5 minutos (cuando hay nuevos). Cuando llegue un nuevo mensaje, si lo ha verificado en cualquier momento en los últimos 5 minutos, ignórelo. Ahorras tu tiempo con este enfoque, mientras sigues en el ciclo.
- Enfoque de rebote : ya sabes Chatty, ella divide una historia completa en pedazos, los envía en un mensaje tras otro. Esperas hasta que Chatty termine toda la historia: si deja de enviar mensajes durante 5 minutos, asumirías que ha terminado, ahora revisas todo.