我无法理解为什么下面的代码不像我预期的那样运行。我希望它:
- 在黄色边框中显示 aaa,
- 然后在短时间内阻止 UI(
for
循环) - 然后在粉红色边框中显示“无”
当我用 setTimeout(aaa,100) 替换 setTimeout(aaa,0) 时,它每次都可以正常工作,但 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";