@chelnokov_a

Как в js посчитать цифры с 0 до числа с фиксированной скоростью?

Как в js посчитать цифры с 0 до числа с фиксированной скоростью?

Например у меня есть число 20 и 30000
Мне нужно чтобы отсчет закончился в одинаковый момент

Сделать простой счетчик не проблема а вот как указать время не пойму
  • Вопрос задан
  • 285 просмотров
Пригласить эксперта
Ответы на вопрос 5
WblCHA
@WblCHA
Типа этого?
{
  const max1 = 9;
  const max2 = 30; // max of two nums
  
  let cur = max2 / max1;
  const inc = cur;
  
  const len = 3;
  const log = (a, b) => {
    console.log(b > -Infinity ? `a: ${`    ${a}`.slice(-len)} | b: ${`    ${b}`.slice(-len)}` : `a: ${`    ${a}`.slice(-len)} |`)
  }
  
  log(0, 0);
  
  for(let i = 1, j = 1; i < max2; i++) {
    const nums = [i];
    if(i >= cur) {
      nums.push(j);
      j++;
      cur += inc;
    }
    log(...nums);
  }
  
  log(max2, max1); 
}
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Определить однажды время начала, и время конца анимации – они общие для всех счетчиков.

В любой момент времени можно посчитать текущее значение из пропорции (now - start) / (end - start) = x / total, откуда x = total * (now - start) / (end - start)

Например, через requestAnimationFrame() вызывать функцию, которая отрисует очередной кадр: текущие значения счётчиков.

Ответ написан
JS нет точного таймера, лучшее что вы можете использовать - серия setTimeout, но чем больше таймаутов, тем сильнее будет накапливаться погрешность, поексперементируйте, увидите подходит ли вам результат.
Ответ написан
Комментировать
@Karpion
Пусть есть число N (в Вашем варианте - 20 или 3000). И есть время T, за которое надо посчитать. Выводим на экран ноль. Затем ждём время T/N и выводим один. Ну и далее аналогично.
Ожидание надо запускать ДО того, как начали выводить число.

Возможна проблема, когда компьютер не успевает выводить числа подряд. Тогда смотрим, сколько прошло времени, и выводим не очередное число, а то, для которого пришло время.
Ответ написан
Комментировать
@TheOnlyFastCoder2
Зависимости от расстояния регулируйте delay , чтобы погрешность была не велика
надеюсь я вам помог) поменяйте значение num1=30000 num2=20 вам можно поставить delay 0.6
чтобы узнать необходимый диапазон delay , нужно записать такую формулу num2 / num 1 * 1000 = 0.6 можно выбрать все значения до 0.6

____ШкОлЬНики:
Мне математика и физика не нужна :))____ результат ->

60f98a7c19ea8171048428.png
Мне интересно , а для чего вам этот алгоритм понадобился ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы