Запустите функцию jQuery 5 раз после изменения размера

Можно ли запустить функцию только 5 раз после изменения размера окна? При изменении размера снова запустите функцию 5 раз.

$(window).bind('resize', function() { 
    setTimeout(function(){ 
        var slider = $('.wrapper .flexslider').data('flexslider');   
        slider.resize();
    }, 500);
});

Эта функция работает каждые 0,5 сек. но браузер не может справиться с этим, и однократного запуска этой функции недостаточно для правильного изменения размера flexslider (я не знаю почему).

2 ответа

Да. Добавьте обратный вызов в вашу функцию и вызывайте его снова, рекурсивно, столько раз, сколько необходимо.

Вот пример функции 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);
        };
    };

    var myEfficientFn = debounce( function() {
       // Your resize code here, only fired once
    }, 500);

    window.addEventListener('resize', myEfficientFn);
Другие вопросы по тегам