js高级-浏览器事件循环机制Event Loop

JavaScript 是队列的形式一个个执行的 同一时间只能执行一段代码,单线程的  (队列的数据结构)

浏览器是多线程的

  JavaScript执行线程负责执行js代码

  UI线程负责UI展示的

  JavaScript事件循环线程  异步的时候先执行一半 等待另外部分完成后在回到队列里面去就是事件循环线程来做

  UI线程 与JavaScript执行线程是互斥的

JavaScript 是单线程的

  JavaScript任务分为

  同步任务:  for 求和 js赋值 js表达式运算

  异步任务:  dom事件、bom api处理、 ajax  

  js主线程直接执行同步任务、异步任务先执行一部分(等用户触发事件比如点击事件等在执行),然后退出主线程执行,等异步任务准备好之后再交给主线程执行

  (https://blog.csdn.net/w2765006513/article/details/53743051  参考资料)

  js单线程

  • 单线程的含义是js只能在一个线程上运行,也就说,js同时只能执行一个js任务,其它的任务则会排队等待执行。
  • js是单线程的,并不代表js引擎线程只有一个。js引擎有多个线程,一个主线程,其它的后台配合主线程。
  • 多线程之间会共享运行资源,浏览器端的js会操作dom,多个线程必然会带来同步的问题,所有js核心选择了单线程来避免处理这个麻烦。js可以操作dom,影响渲染,所以js引擎线程和UI线程是互斥的。这也就解释了js执行时会阻塞页面的渲染。

  

猜你喜欢

转载自www.cnblogs.com/suanmei/p/9048059.html
今日推荐