Javascript JS:启动计时器后,正确的计时方法是什么?
我正在做一个简单的反应计时器游戏。唯一让我感到困惑的是,我在计算回答问题所需的时间 显示用户输入提示后,我将运行此功能:Javascript JS:启动计时器后,正确的计时方法是什么?,javascript,setinterval,Javascript,Setinterval,我正在做一个简单的反应计时器游戏。唯一让我感到困惑的是,我在计算回答问题所需的时间 显示用户输入提示后,我将运行此功能: var addScore = function () { if (playing) { setInterval(function () { score += 10; }, 10) } }; 因此,一旦玩家开始玩这个函数开始,并在每10毫秒后向分数加10。我试着玩,有时我的分数是5-7秒,即使我一回答就回
var addScore = function () {
if (playing) {
setInterval(function () {
score += 10;
}, 10)
}
};
因此,一旦玩家开始玩这个函数开始,并在每10毫秒后向分数加10。我试着玩,有时我的分数是5-7秒,即使我一回答就回答。是因为我把时间加错了吗
小提琴:
- 您是否正在清除间隔?因为如果不是,那些
函数将累加,每10毫秒左右将setInterval
添加到分数中10
不是很精确,您的函数可能会延迟10毫秒以上。(不是像你的例子中那样把10毫秒变成5000毫秒,而是有一点。)这是一个更好的主意,不涉及计时器:setInterval
var questionPosedTime = new Date(); poseTheQuestion(); onAnswerReceived(function() { var answerReceivedTime = new Date(); var answeringDelayInMilliseconds = answerReceivedTime - questionPosedTime; adjustScore(answeringDelayInMilliseconds); });
- 您是否正在清除间隔?因为如果不是,那些
函数将累加,每10毫秒左右将setInterval
添加到分数中10
不是很精确,您的函数可能会延迟10毫秒以上。(不是像你的例子中那样把10毫秒变成5000毫秒,而是有一点。)这是一个更好的主意,不涉及计时器:setInterval
var questionPosedTime = new Date(); poseTheQuestion(); onAnswerReceived(function() { var answerReceivedTime = new Date(); var answeringDelayInMilliseconds = answerReceivedTime - questionPosedTime; adjustScore(answeringDelayInMilliseconds); });
- 您是否正在清除间隔?因为如果不是,那些
函数将累加,每10毫秒左右将setInterval
添加到分数中10
不是很精确,您的函数可能会延迟10毫秒以上。(不是像你的例子中那样把10毫秒变成5000毫秒,而是有一点。)这是一个更好的主意,不涉及计时器:setInterval
var questionPosedTime = new Date(); poseTheQuestion(); onAnswerReceived(function() { var answerReceivedTime = new Date(); var answeringDelayInMilliseconds = answerReceivedTime - questionPosedTime; adjustScore(answeringDelayInMilliseconds); });
- 您是否正在清除间隔?因为如果不是,那些
函数将累加,每10毫秒左右将setInterval
添加到分数中10
不是很精确,您的函数可能会延迟10毫秒以上。(不是像你的例子中那样把10毫秒变成5000毫秒,而是有一点。)这是一个更好的主意,不涉及计时器:setInterval
var questionPosedTime = new Date(); poseTheQuestion(); onAnswerReceived(function() { var answerReceivedTime = new Date(); var answeringDelayInMilliseconds = answerReceivedTime - questionPosedTime; adjustScore(answeringDelayInMilliseconds); });