Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   период в setInterval (https://javascript.ru/forum/misc/59066-period-v-setinterval.html)

annie88 26.10.2015 13:41

период в setInterval
 
Добрый день!
Не могли бы Вы мне помочь?
У меня есть функция, выполняющаяся с периодичностью 30 сек. В ней через setInterval вызывается другая функция, создающая мнимый прогресс бар. Проблема такая, я никак не могу понять какой период необходимо поставить в setInterval, чтобы уместиться в эти 30 сек(как бы глупо это не звучало). Проверяла сколько раз вызывается эта функция и получала каждый раз разные значения, при одном и том же интервале :blink: Не могли бы Вы подсказать из-за чего это может происходить?

функция, выполняющаяся с периодом 30сек
function  funk(){
		setInterval(progressLoad, 3000);// вот здесь она вызывается
		    }


функция, имитирующая progress bar
function progressLoad(){//отображение загрузки
	    var progress = $(document.getElementsByClassName('active-kadr')[document.getElementsByClassName('active-kadr').length-1]).find('.progress_bar');
		if(interest != 100) {
			interest++;
			progress[0].style.width = interest + '%';
				}else{}
	
	}

ksa 26.10.2015 15:27

Цитата:

Сообщение от annie88
Не могли бы Вы подсказать из-за чего это может происходить?

JS не является языком реального времени

Цитата:

Производительность

Большое количество таймеров может привести к серьезной нагрузке на процессор.

Это в первую очередь касается приложений, в которых одновременно анимируется большое количество объектов. В этом случае, по возможности, следует использовать один таймер, который выполняет всю анимацию, а не множество независимых.
http://javascript.ru/setTimeout

annie88 26.10.2015 15:49

Не могли бы Вы сказать, есть ли способ как-то стабилизировать анимацию, помимо запуска в одном таймере?

ksa 26.10.2015 16:19

Цитата:

Сообщение от annie88
Не могли бы Вы сказать, есть ли способ как-то стабилизировать анимацию, помимо запуска в одном таймере?

Я не вкурсе твоей ситуации...

annie88 26.10.2015 16:45

действует примерно так, у меня есть функция, запускаемая в рекурсии в setTimeout с периодом 30сек. В этой функции идет смена содержимого одного из блоков на странице. Так же в этой функции я запускаю в setInterval функцию, которая запускает progress bar( это нужно для того чтобы показать сколько будет длиться кадр)
function progressLoad(){//отображение загрузки ( псевдо progress bar)
        var progress = $(document.getElementsByClassName('active-kadr')[document.getElementsByClassName('active-kadr').length-1]).find('.progress_bar');
        if(interest != 100) {
            interest++;
            progress[0].style.width = interest + '%';
                }else{}

    }

Посоветуйте пожалуйста, как можно реализовать данные действия, чтобы анимация действовала синхронно, т.е смена кадра соответствовала окончанию progress bar

рони 26.10.2015 19:14

annie88,
всё что вам нужно знать тут https://learn.javascript.ru/js-animation

annie88 27.10.2015 07:30

Спасибо)))


Часовой пояс GMT +3, время: 17:55.