Запуск блока кода в течение n секунд в nodejs

Мне нужно запустить блок кода всего за 60 секунд в узле js.

function someFunc()
{
    console.log("hello");
    //event occurs - so time should increase by 5 secs.
}

На конкретном событии время должно увеличиться еще на 5 секунд. Как этого достичь?
setTimeoutне работает, так как он начинает работать через 60 секунд.

1 ответ

  1. Может быть не самое лучшее решение, но почти ближе к вашему требованию. Комментарии объяснят код.

    Нажмите кнопку, чтобы увеличить еще на 5 секунд. Просто используется кнопка для события. Вы можете заменить его своим пользовательским событием.

    var timer = 0; //A timer for execution
    
    var initialTime = 5000; //This is your 60 seconds, change this
    
    var func = function(){ //code block to execcute after time
      console.log("Hello"); 
      console.log(initialTime); //gives 0 Just to check timeout. 
    };
    
    var timeOut; //timeOutId
    
    timeOut = setTimeout(func, initialTime); //initial timeOut
    
    setInterval(function(){ //to run timer
      document.getElementById("timer").innerHTML = ++timer;
      initialTime -= 1000; //reducing time from initially set Time
    }, 1000);
    
    
    function incrementer(){ //event to increase 5 more seconds
      clearTimeout(timeOut);
      initialTime += 5000; //increasing by 5 seconds
      timeOut = setTimeout(func, initialTime); //updated timeOut
    }
    <button onClick="incrementer()" id="timer"></button>