0

私が知りたいのは、機能がどのようにsetInterval機能するかです。

最初:簡単な例があります (ライブデモ)
また、以下のコード。

HTML:

<div id="elem"></div>
<div id="count"></div>
<div id="Timer"></div>

Javascript:

var s = 10;
var count = 0;
if (s == 20) alert("S= 20");
var timer = setInterval(function () {
    if (count < 50) {
        count++;
        document.getElementById('count').innerHTML = "Counter: " + count;
    }
    else {
        clearInterval(timer);
        document.getElementById('count').innerHTML = "Counter: End Of Count";
    }
}, 50);
s = 20;
document.getElementById('elem').innerHTML = "variable 's': " + s;
document.getElementById('Timer').innerHTML = "Timer value: " + timer;
if (s == 20) alert("S= 20");

私が欲しいのは、それがどのように機能するかだけです。
関数のコードを実装した後、トップページのコードの先頭に戻るか、clearInterval 関数を使用するまで再度関数のコードを実装するために戻ります。

誰でも私を助けてください。

4

2 に答える 2

0

コードでは、無名関数を に提供していsetTimeoutます。

に提供される無名関数は、非同期setInterval的に呼び出され ます。匿名関数は、現在の関数が完了するまで初めて実行できません。への呼び出しは、50 ミリ秒ごとに実行する匿名関数を登録しています。すぐには実行されません。setInterval(function() {...})

プログラム フローは次のように実行されます。

set initial variables
check if s == 20
register (not execute) the anonymous function with setInterval
set s = 20
print results
check if s == 20
end of your code blcok
...
50ms later, the first call to your anonymous setTimeout function finally happens
Repeatedly call the anonymous function every 50ms

要点:匿名関数の完了後に特定の操作を実行する必要がある場合は、それらの操作を匿名関数自体の内部に配置します。あなたのコードでは、現在setTimeout呼び出しの後に来elseて、無名関数のブロック内に配置するいくつかの行が必要だと思います。

于 2012-07-03T12:23:34.363 に答える
0

setInterval は、clearinterval が呼び出されるまで、囲まれた関数を繰り返し呼び出し続けます。遅延は秒単位で指定できます。1000 = 1 秒です。50 という小さな遅延を指定したため、関数は 50 の制限に達するまで、立て続けに繰り返し呼び出されます。

于 2012-07-02T15:50:01.343 に答える