Задать вопрос
@aleko2104

Как остановить выполнение функции или цикла по истечению времени?

Есть функция game() в которой выполняется код. Так вот после окончания времени она должна закрыть себя/прекратить выполняться. Это возможно? Спасибо
  • Вопрос задан
  • 3352 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно, например, какой-то флаг поднимать, когда пора функции прекратить работу. А внутри функции, по возможности, смотреть, не поднят ли флаг, и если да – выходить.
var flag = false; // когда будет true - тушите свет!
function game() {
  var i;
  while(true) { // на самом деле из цикла так не выйти
       // пока он крутится, другие потоки не смогут запуститься и изменить значение флага
    i = i++;
    if(flag) return; // выход, когда пора
  }
}
setTimeout( function(){ flag = true;}, 60000}); // через минуту поднять флаг
game();


Другой вариант, более подходящий для цикла - заранее назначить время выхода и смотреть на часы:
var timeToExit = (new Date).getTime() + 300000; // через 5 минут
function game() {
  var i;
  while(true) {
    i = i++;
    if( (new Date).getTime() >= timeToExit) return; // выход, когда пора
  }
}
game();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы