Я нашел следующий код в Интернете, и я пытаюсь реализовать его для работы с прослушивателем событий изменения размера и изо всех сил пытаюсь понять тонкости его работы. Кто-нибудь захочет разбить его на говорящий, что кто-то, у которого есть только 3-месячный опыт JS/Jquery, поймет? Несколько указаний относительно того, с чем я борюсь (что больше всего, но я определяю действительно запутанные части), где «аргументы» или переменная «args», что это значение было присвоено определенному? Как пройти «немедленную» функцию дебюта. и т. д. и т. д.Debouncing Breakdown
function debounce(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);
};
};
var debounceHeightSet = debounce(function() {
numHeightset();
}, 250);
Спасибо за разъяснение относительно «немедленного» логического параметра. Итак, мое основное понимание этого заключается в том, что внутри более поздней функции устанавливается параметр «timeout = null;» означает, что любые вызовы функций во время «ожидания» (устанавливается, когда debounce назначается «debounceHeightSet» и передается методу coreTimeout) игнорируются. Если логический параметр передается в "debounce (function() {...}, true)" вызовы не игнорируются? Не могли бы вы объяснить, что именно происходит, когда функция func имеет цепочку методов .apply() с параметрами «context» и «arg»? – user3586963
var callNow = немедленный &&! Timeout; Когда вы вызываете debounce, вы также добавляете время ожидания. И таймер создается в коде, который будет выполняться после «ожидания». Таким образом, код проверяет, присутствует ли таймер или нет. Если таймер уже присутствует, тогда вызов становится ложным, и func не будет выполнен. –
Оформить эту ссылку, чтобы понять, примените "http://stackoverflow.com/questions/1986896/what-is-the-difference-between-call-and-apply" –