JS:启动计时器后计算时间的正确方法是什么?

时间:2014-11-17 05:26:04

标签: javascript setinterval

我做了一个简单的反应计时器游戏。我唯一能坚持的就是计算回答所需的时间。

显示用户输入提示后,我正在运行此功能:

var addScore = function () {
    if (playing) {
        setInterval(function () {
            score += 10;
        }, 10)
    }
};

因此,一旦玩家开始玩这个功能,每10毫秒就会增加10分。我尝试过玩,有时我的分数显示5-7秒,即使我在答案显示后立即回答。是因为我错误地添加了时间吗?

小提琴: http://jsfiddle.net/lee45276/f3s6waub/

1 个答案:

答案 0 :(得分:3)

  • 你是clearInterval吗?因为如果没有,那些setInterval函数将会累积,每个函数每10分钟左右就会为评分添加10

  • setInterval不是很精确,可能会导致您的函数延迟超过10毫秒。 (在你的例子中,你没有达到10毫秒变成5000毫秒,但有点。)这是一个更好的主意,不涉及计时器:

    var questionPosedTime = new Date();
    poseTheQuestion();
    onAnswerReceived(function() {
      var answerReceivedTime = new Date();
      var answeringDelayInMilliseconds = answerReceivedTime - questionPosedTime;
      adjustScore(answeringDelayInMilliseconds);
    });