这里是在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/
当我点击“运行同步1”时,代码将直接运行到999。当我点击“运行同步2”时,代码将直接运行到999。
当我点击“运行异步”时,页面将逐一呈现。
有人可以帮忙解释一下“运行同步1”和“运行同步2”的区别吗?为什么在“运行同步2”中使用setTimeout不能使它逐一呈现?
setTimeout
仍然是异步的,这意味着“尽快”。 - Bergi