#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.asp3. Что касается таймеров / интервалов — если это в игровом цикле, они вполне могут не подойти. @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
});