【发布时间】:2014-12-10 09:14:06
【问题描述】:
这是jsfiddle上的代码
<script>
function updateSync1() {
for (var i = 0; i < 1000; i++) {
document.getElementById('output').innerHTML = i;
}
}
function updateSync2() {
for (var i = 0; i < 1000; i++) {
setTimeout(document.getElementById('output').innerHTML = i, 0);
}
}
function updateAsync() {
var i = 0;
function updateLater() {
document.getElementById('output').innerHTML = (i++);
if (i < 1000) {
setTimeout(updateLater, 0);
}
}
updateLater();
}
</script>
<div class="row btn_area">
<button class="btn btn-info" onclick="updateSync1()">Run Sync 1</button>
<button class="btn btn-info" onclick="updateSync2()">Run Sync 2</button>
<button class="btn btn-info" onclick="updateAsync()">Run Async</button>
<span class="label label-info pull-right" style="display:block;" id="output"></span>
</div>
http://jsfiddle.net/himaneasy/y1534ths/
当我点击“Run Sync 1”时,代码将直接运行到 999。
当我点击“Run Sync 2”时,代码会直接运行到 999。
当我点击“Run Async”时,页面会一一呈现。
谁能帮助解释 Run Sync1 和 Run Sync2 之间的区别? 为什么 Run Sync 2 中的 setTimeout 不让它一个一个渲染?
【问题讨论】:
标签: javascript performance dom settimeout dom-events