浅谈setTimeout与setInterval

在吐槽这两个欺骗人的感情的方法之前先提一下这两个函数的用法:

setTimeout( function(){ alert(’你好!’); } , 100);
setInterval( callbackFunction , 100);

上述两函数第一个是指延迟100ms后执行回到函数打印“你好”

第二个函数是指每隔100ms就执行一次callbackFunction函数

但是当我们写了这样一段代码后就会发现一个很奇葩的事情:

 

setTimeout( function(){ while(true){} } , 100);
setTimeout( function(){ alert(’你好!’); } , 200);
setInterval( callbackFunction , 200);

 

程序阻塞在了第一句死循环里了~这和我们理解中的异步好像不太一样~~

这里~不得不得出结论:js至始至终都是单线程的~当我们定义了setTimeout和setInterval时~真实的情况是设置的时间到了后将待执行的方法异步提交到js的执行队列中等待执行~如果队列中没有其他队列在等待则被提交的方法就会被立即执行~给用户的感觉就是一个异步的执行

 

posted @ 2015-11-19 13:12  Liujunyan_x  阅读(160)  评论(0编辑  收藏  举报