以下のコードが期待どおりに動作しない理由を理解するのに問題があります。私はそれがすることを期待します:
- 黄色い枠でaaaを表示し、
- 次に、UIを短時間ブロックします(
for
ループ) - 次に、ピンクの枠に「なし」を表示します
setTimeout(aaa,0) を setTimeout(aaa,100) に置き換えると、毎回正常に動作しますが、setTimeout(aaa,0) で aaa 関数をキューに入れて、aa が実行される前にブラウザーが再描画できるようにすべきではありません? 毎回ステップ1〜3に従うことを期待していますが、明らかに何かが欠けています。毎秒実行するだけでこのように動作するようです。
コードは以下にあり、http://jsfiddle.net/dDJ8L/でフィドルを作成しました。
HTML
<div id="aaa" style="border: 1px solid green">aaa</div>
Javascript
div = document.getElementById("aaa");
div.style.border = "1px solid red";
function aaa() {
for (var i = 0; i < 1000000; i++) {
div.innerHTML = i;
}
div.innerHTML = "nothing";
div.style.border = "1px solid pink";
}
div.style.border = "1px solid blue";
setTimeout(aaa, 0);
div.style.border = "1px solid yellow";