`
2008winstar
  • 浏览: 57504 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • chenke: 写的很好,也可以看看那这个文章,我感觉学的还可以。http:/ ...
    HTML

JavaScript之执行

 
阅读更多

JavaScript的解析执行是单线程的,也就是说所有的JavaScript代码是在一个线程里执行的,JavaScript引擎同一时间只执行一条代码,所以每一个JavaScript代码执行块会”阻塞“其它异步事件的执行。

 

JavaScript是事件驱动的,用户的操作会触发相应的事件(如点击、Ajax请求等),这些事件发生后,绑在事件上的回调函数会被添加到一个执行队列的最后等待执行。这些事件的回调函数,只有等到获得执行机会的时候才会被执行。

 

当JavaScript执行完当前的任务(代码块)后,会到等待的”执行队列“去看是否还有需要执行的函数或代码块,如果有,则取出队列最前端的函数或代码块(按照先进先出的队列原则)来执行。

 

JavaScript执行的异步,非阻塞特性

正常情况下,JavaScript按代码块/语句的先后顺序执行。

在完成初始化的执行后,JavaScript对页面的用户交互事件进行监听。

当事件发生时(有可能是多个事件),虽然在同一时间只能执行一个事件的处理函数,但是其它事件的处理函数会被添加到执行队列中等待执行。而且在这个过程中,是异步的模式,也就是说JavaScript并不会停下来等待,等待事件处理函数的执行,而是会继续执行其它当前的操作;与此同时,可能会发生新的事件,新的事件处理函数会被添加到执行队列中……,也就是说JavaScript还在继续对用户的操作进行响应,而不会”阻塞“用户的操作。

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics