Я написал функцию javascript, которая использует setInterval для манипулирования строкой каждую десятую секунды в течение определенного числа итераций.
function timer() {
var section = document.getElementById('txt').value;
var len = section.length;
var rands = new Array();
for (i=0; i<len; i++) {
rands.push(Math.floor(Math.random()*len));
};
var counter = 0
var interval = setInterval(function() {
var letters = section.split('');
for (j=0; j < len; j++) {
if (counter < rands[j]) {
letters[j] = Math.floor(Math.random()*9);
};
};
document.getElementById('txt').value = letters.join('');
counter++
if (counter > rands.max()) {
clearInterval(interval);
}
}, 100);
};
Вместо того, чтобы установить интервал на определенное число, я хотел бы обновлять его каждый раз, когда он работает, на основе счетчика. Так что вместо:
var interval = setInterval(function() { ... }, 100);
Это было бы что-то вроде:
var interval = setInterval(function() { ... }, 10*counter);
К сожалению, это не сработало. Казалось, что "10 * counter" равно 0.
Итак, как я могу настроить интервал каждый раз, когда анонимная функция запускается?
источник
--t
вероятно, должен бытьt--
jsfiddle.net/albertjan/by5fdtimes
она слишком велика?t
totick
, которое было моим лучшим предположением относительно того, что должно означать «t».t
довольно плохое имя переменной.Вы можете использовать анонимную функцию:
ОБНОВЛЕНИЕ: Как предложено А. Вольфом, используйте,
setTimeout
чтобы избежать необходимостиclearInterval
.источник
Мне нравится этот вопрос - вдохновил маленький объект таймера во мне:
Пример использования
источник
У меня был тот же вопрос, что и у оригинального постера, я сделал это как решение. Не уверен, насколько это эффективно ....
источник
setInterval
неправильности @RozzA - оно по-прежнему подвержено тем же задержкам, что и любой другой JavaScript, и почти каждый браузер также устанавливает значение setInterval равным 4 мс. У вас есть ссылка на пост об этом или что-то?Это мой способ сделать это, я использую setTimeout:
Использование:
источник
set_interval
функция, чтобы НЕ запускать новое выполнение, если новый интервал не меньше старого ..if (iv < this.iv) { clearInterval(this.timeout); this.start(false, iv); } else { this.iv = iv; }
Гораздо проще было бы иметь
if
оператор в обновленной функции и элемент управления для выполнения вашей команды через регулярные промежутки времени. В следующем примере я запускаю оповещение каждые 2 секунды, и интервал (intrv
) можно динамически изменять ...источник
Это может быть инициировано, как вы хотите. Тайм-аут это метод, который я использовал, чтобы держать его на вершине часа.
Мне нужно было каждый час начинать блок кода на час. Так что это начнется при запуске сервера и будет работать каждый час. По сути, первоначальный прогон должен начинать интервал в течение той же минуты. Таким образом, через секунду от init, запускайте сразу же, затем каждые 5 секунд.
С другой стороны, если вы хотите, чтобы что-то происходило при запуске, а затем навсегда через определенный интервал, вы можете просто вызвать это одновременно с setInterval. Например:
Здесь мы проводим это в первый раз, а затем каждый час.
источник
Простой ответ: вы не можете обновить интервал уже созданного таймера . (Есть только две функции
setInterval/setTimer
иclearInterval/clearTimer
, поэтому, имея,timerId
вы можете только деактивировать его.) Но вы можете сделать некоторые обходные пути. Посмотрите на этот репозиторий GitHub .источник
Я не смог синхронизировать и изменить скорость, которую установил setIntervals, и я собирался опубликовать вопрос. Но я думаю, что нашел способ. Это, безусловно, должно быть улучшено, потому что я новичок. Итак, я бы с удовольствием прочитал ваши комментарии / замечания по этому поводу.
Если вы хотите , счетчики начинают расти после загрузки страницы, поставить
counter1()
иcounter2()
вfoo()
прежде , чемcountingSpeed
называется. В противном случае, выполнение занимаетspeed
миллисекунды. РЕДАКТИРОВАТЬ: более короткий ответ.источник
не может быть короче
источник
Я новичок в JavaScript, и не нашел никакой помощи в предыдущих ответах (но много хороших идей).
Этот фрагмент кода ниже ускоряется (ускорение> 1) или замедляется (ускорение <1). Я надеюсь, что это может помочь некоторым людям:
С участием :
timer
: начальное значение setInterval в мс (увеличение или уменьшение)refresh
: время доtimer
расчета нового значения . Это длина шагаfactor
: разрыв между старым и следующимtimer
значением. Это высота ступенькиисточник
Сделайте новую функцию:
источник
Вот еще один способ создать таймер замедления / ускорения. Интервал умножается на коэффициент, пока не будет превышено общее время.
источник
источник
Uncaught TypeError: interval is not a function
но это сработало: jsfiddle.net/fgs5nwgnВдохновленный внутренним обратным вызовом, описанным выше, я сделал функцию для запуска обратного вызова за доли минуты. Если для тайм-аута заданы интервалы, такие как 6 000, 15 000, 30 000, 60 000, он будет непрерывно синхронизировать интервалы с точным переходом к следующей минуте системных часов.
источник