Osobiście uważałem, że debounce jest trudniejsze do zrozumienia niż przepustnica .
Ponieważ obie funkcje pomagają odłożyć w czasie i zmniejszyć szybkość niektórych operacji. Zakładając, że wywołujesz funkcje ozdobne zwracane przez przepustnicę / debounce wielokrotnie ...
- Przepustnica : oryginalna funkcja może być wywoływana maksymalnie raz na określony czas.
- Debounce : oryginalna funkcja zostanie wywołana po tym, jak osoba dzwoniąca przestanie wywoływać dekorowaną funkcję po określonym czasie .
Uważam, że ostatnia część debaty jest kluczowa dla zrozumienia celu, który próbuje osiągnąć. Znalazłem też starą wersję implementacji _.debounce, która pomaga zrozumieć (dzięki uprzejmości 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);
};
};
Niejasna metafora, ale może też może pomóc.
Masz znajomego o imieniu Chatty, który lubi z tobą rozmawiać przez komunikator. Zakładając, że kiedy mówi, wysyła nową wiadomość co 5 sekund, a ikona aplikacji czatu przesuwa się w górę iw dół, możesz ...
- Naiwne podejście: sprawdzaj każdą wiadomość, dopóki ona dotrze. Gdy ikona aplikacji podskoczy, sprawdź. To nie jest najskuteczniejszy sposób, ale zawsze jesteś na bieżąco.
- Podejście przepustnicy : sprawdzasz raz na 5 minut (gdy są nowe). Gdy nadejdzie nowa wiadomość, jeśli sprawdziłeś ją w ciągu ostatnich 5 minut, zignoruj ją. Dzięki takiemu podejściu oszczędzasz czas, będąc ciągle w pętli.
- Podejście do debugowania : znasz Chatty, ona rozkłada całą historię na części, wysyła je jedna po drugiej. Poczekaj, aż Chatty skończy całą historię: jeśli przestanie wysyłać wiadomości na 5 minut, możesz założyć, że skończyła, teraz sprawdzasz wszystko.