Javascript使用for循环来休眠代码流

时间:2018-06-13 15:00:11

标签: javascript jquery loops asynchronous

尝试以这种方式睡眠代码流(而不是setTimeOut)进行实验

var div = document.getElementById("algo-code");

div.innerHTML += "<p>Extra stuff1</p>";

// works like sleep in php
for (var i = 0; i < 1000000; i++) {
}

div.innerHTML += "<p>Extra stuff2</p>";

它同时为div添加了两个段落,但是当我把console.log而不是div.innerHTML它同步时,在打印第二个控制台之前会睡一段时间。

实际上发生了什么?

1 个答案:

答案 0 :(得分:1)

我最好的猜测为什么它似乎工作&#34;更好&#34;或者&#34;如你所料&#34;在控制台中,优化器在控制台js上没有那么激进,但是认识到你的for()块什么也不做,并且在不在控制台中时忽略它们。或者,环可能太紧,以至于不会发生绘画。

无论如何,正如建议的那样,你真的想看看setTimeout()

&#13;
&#13;
setTimeout(function(){
  var div = document.getElementById("algo-code");
  div.innerHTML += "<p>Extra stuff1</p>";
  
  setTimeout(function(){ div.innerHTML += "<p>Extra stuff2</p>";}, 1000);
}, 1000);
&#13;
<div id="algo-code">......</div>
&#13;
&#13;
&#13;