0

我正在使用 C#.Net 中的一个 Windows 应用程序和一个 Web 应用程序。我在 Windows 应用程序上使用了 Timer 控件,并SetTimeOut()在 Web 应用程序中使用了函数。但是当我同时运行 1 或 2 分钟后显示的秒数少于 Windows 应用程序时间。

使用 Java 脚本代码,例如:

function TimerDisplay(hour, min, sec, id) 
{
      $("#" + id).html(hour.pad() + ":" + min.pad() + ":" + sec.pad());
    if (sec >= 59) {
        sec = 0;
        if (min >= 59) {
            min = 0;
            sec = 0;
            hour += 1;
        }
        else {
            min += 1;
            sec = 0;
        }
    } 
    else
        sec += 1;
    setTimeout(function () { TimerDisplay(hour, min, sec, id); }, 1000);  
}



Number.prototype.pad = function () {
    return (this < 10 ? '0' : '') + this;
}

如果有人有想法,请提出建议。

4

2 回答 2

2

Javascript 的setTimeout不会在准确的时间运行,它会在间隔到期后放入队列中运行。如果 CPU 很忙,它可能会在间隔之后运行相当长的一段时间。

如果您想要更准确的间隔,则需要以更频繁的间隔运行函数,并尝试估计下一次调用的时间应尽可能接近所需的间隔。请参阅高效秒表

于 2012-07-02T10:09:28.610 回答
0

Javascript 是单线程应用程序,因此可能不会定期调用设置超时,因为 CPU 可能正忙于执行某些其他类型的任务。

于 2012-07-02T10:15:28.117 回答