Особисто мені було важче зрозуміти дебют, ніж дросель .
Оскільки обидві функції допомагають вам відкласти та зменшити швидкість деяких виконання. Якщо припустити, що ви викликаєте декоровані функції, повернені дроселем / дебютуванням неодноразово ...
- Дросель : вихідну функцію можна викликати не більше одного разу за вказаний період.
- Debounce : оригінальна функція викликається після того, як абонент перестане дзвонити на декоровану функцію через визначений період .
Останню частину дебюнсу я визнав важливою для розуміння мети, яку вона намагається досягти. Я також виявив, що стара версія реалізації _.debounce допомагає зрозуміти (люб’язно 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);
};
};
Надумана метафора, але, можливо, також могла б допомогти.
У вас є друг на ім’я Чатті, який любить спілкуватися з вами через чат. Припускаючи, що вона розмовляє, вона надсилає нове повідомлення кожні 5 секунд, тоді як ваш значок додатка для чату підстрибує вгору і вниз, ви можете взяти ...
- Наївний підхід: перевіряйте кожне повідомлення, поки воно надійшло. Коли піктограма програми відскакує, перевірте. Це не найефективніший спосіб, але ви завжди в курсі.
- Підхід до дросельної заслінки : ви перевіряєте раз на 5 хвилин (коли з’являються нові). Коли надійде нове повідомлення, якщо ви перевіряли будь-який час протягом останніх 5 хвилин, ігноруйте його. Ви економите свій час таким підходом, перебуваючи в циклі.
- Підхід до дебюнансу : ти знаєш Четті, вона розбиває цілу історію на шматки, надсилає їх в одному повідомленні за іншим. Ви чекаєте, поки Чатті закінчить всю історію: якщо вона перестане надсилати повідомлення на 5 хвилин, ви вважаєте, що вона закінчилася, тепер ви все перевіряєте.