Javascript定时器算法帮助,做一次,然后clearInterval

Javascript定时器算法帮助,做一次,然后clearInterval,javascript,algorithm,timer,setinterval,reset,Javascript,Algorithm,Timer,Setinterval,Reset,在mousemove或scroll上,如果计时器没有运行,我想重置计时器,并且在计时器函数中运行一次函数。到目前为止我有这个 var timerId, lastActive = new Date().getTime(), token; var timerFunc = function () { var currentTime = new Date().getTime(); var timeDiff = currentTime - lastActive; if

在mousemove或scroll上,如果计时器没有运行,我想重置计时器,并且在计时器函数中运行一次函数。到目前为止我有这个

var timerId,
    lastActive = new Date().getTime(),
    token;

var timerFunc = function () {

   var currentTime = new Date().getTime();
   var timeDiff = currentTime - lastActive;
   if (timeDiff > 10000) {
     //clearInterval(timerId);
   }

      //I want to do some logic here
      // but only on the first iteration of the timer
      //how can I do that?

};

$(window).on('mousemove scroll', function (e) {
lastActive = new Date().getTime();

 //only restart the timer if its not currently running. How can I do that??
if(resetTimer)
       timerId = setInterval(timerFunc , 10000);            
 });

 timerId = setInterval(timerFunc , 10000);

任何javascript大师都能帮我填补这些空白吗?如果我太简短,我道歉。我会跟进评论中的任何问题。感谢大家提供的任何提示、链接、技巧等。。干杯

我会在第一个间隔中使用一个布尔变量(这很简单,只需在计时器之后添加它。在if(resetTimer)中,您的想法是正确的同样,要检查它是否正在运行,只需让timer函数在运行和停止时设置一个全局变量。

我不完全清楚您想要的是什么,您能否更具体地说明您希望进程如何工作?您的间隔(即计时器)被分配给
timerId
。因此,要测试间隔是否正在运行,您将使用
if(timerID)
,还是我错过了什么?是的,Rey,jQuery很好。Anthony——我基本上想做一篇ajax文章。我希望计时器功能在计时器启动时发送一篇,如果用户在10秒内没有移动鼠标或滚动,则发送一篇。我不想在每次鼠标移动或滚动时发送一篇,只在计时器当前未运行时发送我假设你不是真的指全局变量(邪恶),而是指一个仅可由脚本访问的变量(即在当前范围内)