【发布时间】:2015-10-26 07:15:24
【问题描述】:
我正在尝试制作一个简单的游戏,例如:www.aimbooster.com 来测试我的 JavaScript 知识,但我遇到了问题。基本上我想要一个计时器来计算用户的时间,但我不能使用 setInterval 方法,因为程序必须等待一整秒才能发生其他任何事情,这不是我想要的。我想要的是这个计时器进程在后台运行。我认为这通常被称为“线程”。我该怎么办?我想要一些类似的东西:
function startTimer() {
while (stop == false) {
setInterval(function() {time++};1000);
}
}
function startGame() {
startTimer();
//MY GAME STARTS HERE
}
如果我现在这样做,startTimer 函数将继续运行,我将无法执行任何其他操作。我希望 startTimer 是一个子进程,而主进程是游戏。
【问题讨论】:
-
setTimeout 和 setInterval 的标称分辨率为 1 毫秒,但运行速度可能不会那么快。某些版本的 IE 是 15 毫秒左右,其他浏览器可能是 2 或 3 毫秒。这不是线程,javascript 是同步的(大部分)。传递给 setInterval 的函数将以您指定的间隔运行,在其他 javascript 函数之间。它不会在其他 javascript 函数运行时运行。
-
顺便说一句,网上有很多关于 setTimeout 和 setInterval 如何工作的文章。阅读一些,我敢肯定有些不准确,但总的来说你会明白的。
标签: javascript multithreading timer counter