今天学习js,用到了window下面的setTimeout和setInterval两个方法有一些理解。这里用到了操作系统原理里面的生产者和消费者模型。这里有以下几个观点:
1、js引擎执行js代码的时候是单线程的,即同一时刻只会有一个进程执行JS代码
2、JS中的异步通信和定时是由另外的线程实现的,脱离js线程上下文
3、js执行的操作类似于生产者和消费者模型
以下图是说明了js引擎和定时器引擎的关系:
要说明下,以上js代码是body标签上面onload=“init()“,首先执行init()方法,执行到setTimeout(showAd,1000)的时候定时器线程会开始定时,1秒后将showAd回调函数任务放进事件队列中,,这时js线程处于空闲状态,然后就从事件队列拿showAd方法进行执行。showAd方法执行过程会启动setInterval方法,定时器线程也开始定时,同时js线程代码向下执行,执行完成后js引擎处于空闲状态。200000毫秒后,定时器线程将hideAd任务放进任务队列中,这时空闲的js引擎就调用hide方法向下执行。后面调用clearInterval()方法,通过上面函数返回的定时器id来关闭定时器。执行结束。
参考链接:
http://blog.csdn.net/yczz/article/details/7014907
http://www.cnblogs.com/woxihuanni/p/5736121.html