JS执行机制

js是单线程执行,js是操作dom,由于是单线程,只要有一处问题,就会中断执行;

为了解决单线程的这个弊端,出现了同步和异步两个概念,

同步执行:前一个任务执行完了,才能执行后一个任务,一旦有问题,就会终止执行。

js代码基本都是同步执行

异步执行:前一个任务执行时花费时间过长,无需等待,执行下一个任务,这是异步,异步再执行过程中,依次排到任务队列中,等主线程执行完毕,依次执行。

 

异步执行有事件,定时器,资源请求才是异步。

由于定时器是异步执行,定时器不会准确的定时执行,主线程执行的时候,依次排到任务队列中,等主线程执行完毕,依次执行,所以会有5ms左右的延迟。主线程执行的过程中,异步执行等会执行,只是里面的callback会去排队提交。

 

SetTimeout等主线程结束后开始计时,达到计时时间就提交任务,onclick只有触发这个事件就提交任务。

定时器例子:

for(var i=0;i<5;i++){

  var t=setTimeout (function(){

 

     console.1og(i)

     clearTimeout(t)

  },1000)

}

画图分析:

 

 

 

 

 

 

 

posted @ 2020-03-05 23:22  奥特曼的猫  阅读(133)  评论(0)    收藏  举报