JS设置超时时将被挂起

<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肯定是被挂起了。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值