javascript异步编程(一)

来源:互联网 发布:cda数据分析师报名费用 编辑:程序博客网 时间:2024/05/16 15:40

javascript单线程的,这句话你理解了吗?

javascript事件是工作的呢?


javascript确实是单线程的,他确保了了线程不会被阻塞,javascript的这种事件驱动模型是他的核心优势。

Javascript中的函数调用也是通过堆栈实现的,将要执行的事件一次加入队列的末端

也许这么说你还不理解,下面几个例子,你研究一下,就会懂了。

   for (var i = 1; i <= 3; i++) {<span style="white-space:pre"></span>setTimeout(function(){ console.log(i); }, 0);   };

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

也许,以前,你或许听过,或者认为  setTimeout是异步的。

但是这些例子是说明,javascript是单线程的,最好例子。所有事件都是依次加到 队列的 末端。

 setTimeout是怎么工作的呢?

确实,浏览器模型定时计数器并不是由JavaScript引擎计数的,因为JavaScript引擎是单线程的,它没空计时,它必须依赖外部来计时并触发定时,所以队列中的定时事件也是异步事件.  这可能就是给我们  setTimetou是异步的错觉的原因吧。






0 0
原创粉丝点击