2011-10-07 4 views
3

Мне нравится прятать мои сайты с эффектами (не так уж много), но у меня обычно есть 3-4 интервала. Просто интересно, знает ли кто-нибудь, если я растягиваю барьеры, или могу ли я получить гораздо больше, если бы захотел?Сколько setIntervals слишком много в хорошей практике?

+4

Определить 'эффекты'. Если это один и тот же сайт 'effects' 90s известны, 1 слишком много. – Omar

+2

Ну, это зависит. Они запускаются каждые 5 минут или каждые 50 миллисекунд? – Dennis

+0

lol jquery анимация всплески и приращения позиции –

ответ

2

Если вы боитесь иметь несколько таймеров, используйте 1 таймер и сделайте так, чтобы огонь срабатывал каждый n-й таймер, отсчитывающий таймер. Это зависит от того, что вы пытаетесь сделать, хотя.

+0

Эй, мне нравится эта идея. Это должно быть лучше. –

1

Это действительно зависит от того, сколько времени требуется для выполнения каждого из них, и задержки между ними.

Ваш браузер будет останавливать эти вызовы, поэтому, если вы беспокоитесь о замедлении работы пользователя (или резких анимациях), вы, вероятно, можете обнаружить довольно простой код времени, если вам не хватает желаемого интервала. Затем вы можете уменьшить (или увеличить) количество отображаемых эффектов соответственно.

5

Я бы предположил, что любой setinterval слишком много, вы всегда должны использовать settimeout. Причина этого в том, что javascript является однопоточным. Это означает, что если какой-либо код (возможно, функция в setinterval) блокирует вызов тайм-аута, setinterval будет продолжать выдавать больше вызовов функции. С небольшими интервалами это может привести к укладке вызовов функций, из-за чего EXTREMELY трудно найти/воспроизвести ошибки.

Лучшая практика заключается в том, чтобы просто использовать настройку внутри самой функции. Так что, если вы ранее имели:

function foobar() 
{ 
// do some stuff 
} 
setInterval(foobar, 100) 

Вы должны изменить его на:

function foobar() 
{ 
//do some stuff 
setTimeOut(foobar, 100) 
} 

Это имеет дополнительное преимущество, что вы можете добавить немного логики, чтобы проверить, если вы на самом деле хотите, чтобы запустить функцию еще раз.

Смежные вопросы