Посмотрите, прошло ли 2 секунды в Javascript

#javascript

#javascript

Вопрос:

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

 // lastSpawn has been set to 0 earlier in the scope, outside of this function
var curr_time = parseInt((new Date()).getMilliseconds());
      if (curr_time   2000 > lastSpawn ) {
        // Do something
        lastSpawn= curr_time;
      }
  

Я не знаю, имеет ли это значение, но это выполняется внутри функции update() игры Phaser 3.

Комментарии:

1. Почему не использовать setTimeout??

2.просто используйте setInterval w3schools.com/jsref/met_win_setinterval.asp

3. Что касается таймеров / интервалов — если это в игровом цикле, они вполне могут не подойти. @Ruud — это простая логическая ошибка — вам нужно немного поменять местами свой if — if (lastSpawn 2000 < curr_time)

Ответ №1:

если вы хотите запускать что-то каждые 2 секунды, вы можете использовать setInterval функцию

 setInterval(function() {
   // code to excecute
}, 2000) // 2 seconds = 2000 miliseconds
  

Для получения дополнительной информации о setInterval посмотрите здесь:https://www.w3schools.com/jsref/met_win_setinterval.asp

Ответ №2:

Мне только что сказали, что из-за того, что я использую игровой движок (Phaser 3) Я не могу установить таймеры таким образом, и вместо этого следует использовать следующее:

 var timer = this.time.addEvent({
        delay: 1500,                // ms
        callback: updateCounter,
        loop: true
      });