在javascript中制作时间计数器?

时间:2015-10-26 07:15:25

标签: javascript multithreading timer counter

我正在尝试创建一个简单的游戏:www.aimbooster.com来测试我的javascript知识,但我遇到了一个问题。基本上我想要一个计时器来计算用户获得的时间,但是我不能使用setInterval方法,因为那时程序必须等待一整秒才能发生其他事情,这不是我想要的。我想要的是这个计时器进程在后台运行。我认为这通常被称为"线程"。我怎么会这样呢?我想要的东西是:

function startTimer() {
   while (stop == false)  {
       setInterval(function() {time++};1000);
  }
}


function startGame()  {
   startTimer();
   //MY GAME STARTS HERE

}

如果我现在这样做,startTimer功能将不断进行,我无法做任何其他事情。我希望startTimer是一个子进程,而主进程是游戏。

2 个答案:

答案 0 :(得分:1)

while (stop === false)  {
   setInterval(function() {time++};1000);
}

这是一个无限循环,你正在调用setInterval无限时间,而eventloop没有机会将回调弹出到堆栈以增加时间变量。

我想保存timer变量,并使用clearInterval来停止计时器

function Game() {

}

Game.prototype.start = function() {
   this.timer = setInterval(function() {
     // do your stuff
   }, 1000);
   // start game
}

Game.prototype.stop = function() {
   clearInterval(this.timer);
}

答案 1 :(得分:-1)

您可以执行以下操作:

function startTimer() {
       setInterval(function() {while (stop == false) time++}, 1000);
}