0

私は C#.Net の Windows アプリケーションと Web アプリケーションの 1 つを使用しています。Windowsアプリケーションでタイマーコントロールを使用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 が他の種類のタスクを実行するためにビジー状態になる可能性があるため、set timeout が定期的に呼び出されない場合があります。

于 2012-07-02T10:15:28.117 に答える