Вход

Просмотр полной версии : too much recursion


Nesquik
24.02.2016, 22:47
function phone_anim() {
$('.phone').animate({
opacity: 0.3
}, 600).animate({
opacity: 1
}, 600);

phone_anim();
}

phone_anim();

:) я думал прокатит(

рони
24.02.2016, 23:15
Nesquik,
строка 8 должна быть в строке 6

Nesquik
24.02.2016, 23:29
рони, боюсь спросить это как?

рони
24.02.2016, 23:32
Nesquik,
(function phone_anim() {
$('.phone').animate({
opacity: 0.3
}, 600).animate({
opacity: 1
}, 600, phone_anim);
}())

Nesquik
24.02.2016, 23:38
Вопрос еще любопытный. В моем предыдущем опыте использования асинхронных функций таймаута и интервала приводило к тому что условно мигание постепенно убыстрялось. Ведь, как я понимаю, это связано с механизмом работы данных функций в js ? и, если к примеру таймаут = 0 реальное срабатывание = 200 мс.

рони
24.02.2016, 23:46
Nesquik,
это связано только с тем что вы увеличивали количество запущенных функций, устройство таймаута или интервала тут не причём, только в случае интервала создать лавину функций проще и беспощаднее.

Nesquik
24.02.2016, 23:56
рони, т.е. я правильно понимаю что через рекурсию подобные задачки решать лучше?

рони
25.02.2016, 00:05
рекурсию подобные задачки решать лучше?
лучше не умножать количество процессов, неважно за счёт чего это достигается, правильным запуском таймера или Callback

Nesquik
25.02.2016, 00:08
да, но как тогда решить такие задачи?

рони
25.02.2016, 00:29
да, но как тогда решить такие задачи?
запускать следующий цикл, только когда отработал предыдущий, либо отключать работу предыдущего цикла при запуске нового.
первый вариант пост 4
второй ниже
(function phone_anim() {
$('.phone').stop(true,true).animate({
opacity: 0.3
}, 600).animate({
opacity: 1
}, 600 );
window.setTimeout(phone_anim, 1200)
}())
даже если 1200 будет меньше 600 + 600 , stop прервёт предыдущие анимации и наложения анимаций не произойдёт.