Может ли setInterval существенно снизить производительность браузера? - PullRequest
0 голосов
/ 05 февраля 2012

Я использую популярный плагин jquery Masonry, чтобы красиво разместить мои столбцы в макете. Я использую setInterval для решения той же проблемы, что и BoltHead: JQuery, setTimeout не работает

Решение состоит в том, чтобы использовать setTimeout для обновления плагина masonry каждую секунду следующим образом:

$(function() {
  setInterval(update, 500);
});

    function update() {
        var $container = $('#packages');
        $container.imagesLoaded(function(){
          $container.masonry({
            itemSelector : '.mainPackage',
            columnWidth : 316,
            singleMode: true,
            gutterWidth: 15
          });
        });
    }

Это плохая идея с точки зрения производительности браузера? Я думаю, что jquery, выполняющий эту довольно здоровенную функцию каждую секунду, замедлит процесс. Это плохая практика? Причина, по которой я это делаю, заключается в том, что я использую .slideToggle для скольжения большего количества контента, поэтому для настройки макета требовалась кладка. Есть мысли по поводу этого решения?

Ответы [ 3 ]

3 голосов
/ 05 февраля 2012

slideToggle получает обратный вызов в качестве второго аргумента, поэтому обновите там свой плагин, примерно так:

slideToggle(time, function(){
    update(); // this is your "update" function from question example
});

и да, это плохая идея - периодически обновлять без какой-либо причины.

0 голосов
/ 29 декабря 2012

Это зависит только от того, сколько блоков требуется плагину для «масонирования».Если у вас есть что-то вроде 20-50 блоков, запускать обновление каждые 500 мс будет без проблем.Это из моего личного опыта с таким же делом, как у вас.

0 голосов
/ 05 февраля 2012

По моему опыту, запуск чего-то подобного замедлит работу браузера. Сначала вы можете этого не заметить, но чем дольше работает скрипт, тем хуже он будет. Мне очень нравится ответ @vucetica.

...