handleman
4/14/2016 - 1:42 PM

deferred function execution (debounce) отложенное выполнение функции

deferred function execution (debounce)

отложенное выполнение функции

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);
};