<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">好吧,今天又写着玩了,发现setTimeout()会被挂起,而不是被阻塞,这一点很奇怪,因为我们都知道,JavaScript是单线程语言,也不知道它解释器是怎么设定的,看看代码吧:</span>
function operateInsertBefore(){
var divNode=document.createElement("div");
var aNode=document.createElement("a");
aNode.appendChild(document.createTextNode("www.baidu.com"));
aNode.setAttribute("href","www.baidu.com");
divNode.appendChild(aNode);
var s1Node=document.getElementById("s1");
s1Node.innerHtml="";
s1Node.appendChild(divNode);
//insertBefore
var taskF=window.setTimeout(function(){
alert("Hello World");
var pNode=document.createElement("p");
pNode.appendChild(document.createTextNode("Hello World!"));
divNode.insertBefore(pNode, aNode);
s1Node.innerHtml="";
s1Node.appendChild(divNode);
}, 2000);
<pre name="code" class="javascript"><span style="white-space:pre"> </span>var taskS=<span style="font-family: Arial, Helvetica, sans-serif;">window.setTimeout(function(){</span>
window.clearTimeout(taskF);}, 2000);//window.clearTimeout(taskF);}
做insertBefore的时候,发现怎么也没有办法进入超时设置的代码块,后来把清除超时设置设定为2000毫秒以后时,发现inserBefore成功了,那么,taskF肯定是被挂起了。