资讯专栏INFORMATION COLUMN

讲清楚基础系列——JS执行机制

dance / 3386人阅读

摘要:为什么是单线程的单线程的是怎么实现异步的问题一多线程的操作同一个,会造成浏览器的执行冲突比如一个删除,一个修改。问题二通过事件循环机制实现异步是单线程的,主线程拥有一个执行栈和执行队列。

js为什么是单线程的?单线程的js是怎么实现异步的?

问题一:多线程的js操作同一个DOM,会造成浏览器的执行冲突(比如:一个删除,一个修改)。
问题二:通过事件循环机制(EventLoop)实现异步;

EventLoop
JS是单线程的,主线程拥有一个执行栈和执行队列。主线程自上而下依次执行代码,并判断函数是同步的还是异步的,同步的函数直接在主线程中执行,异步函数塞入执行队列。当主线程的函数执行完毕后,再将异步函数从执行队列中出栈,直到执行完毕。

macrotasks:

setTimeout

setInterval

setImmediate

requestAnimationFrame

I/O

UI rendering

microtasks:

process.nextTick

Promises

Object.observe

MutationObserver

==microtask的执行优先级高于macrotask==

浏览器和Node的执行顺序不一样,上述规则适用于浏览器

https://github.com/kaola-fed/...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110292.html

相关文章

  • 讲清基础系列——css布局

    摘要:两列或三列布局使用左右中间圣杯和双飞翼布局,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局。,,同样需要设置父元素的高度方案方案,,更适合子元素宽高固定的情况是父元素的中心点,减去图片宽度和高度的一半从而达到定位效果 两列或三列布局 使用flex float 左右position:absolute,中间margin-left,margin-right 圣杯和双飞翼布局,都...

    qpwoeiru96 评论0 收藏0
  • 讲清基础系列——css布局

    摘要:两列或三列布局使用左右中间圣杯和双飞翼布局,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局。,,同样需要设置父元素的高度方案方案,,更适合子元素宽高固定的情况是父元素的中心点,减去图片宽度和高度的一半从而达到定位效果 两列或三列布局 使用flex float 左右position:absolute,中间margin-left,margin-right 圣杯和双飞翼布局,都...

    anquan 评论0 收藏0
  • 讲清基础系列——css布局

    摘要:两列或三列布局使用左右中间圣杯和双飞翼布局,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局。,,同样需要设置父元素的高度方案方案,,更适合子元素宽高固定的情况是父元素的中心点,减去图片宽度和高度的一半从而达到定位效果 两列或三列布局 使用flex float 左右position:absolute,中间margin-left,margin-right 圣杯和双飞翼布局,都...

    tuomao 评论0 收藏0
  • 讲清之javascript作用域

    摘要:并且作用域链也确定了在当前上下文中查找标识符后返回的值。为了具象化分析问题,我们可以假设作用域链是一个数组,数组成员有一系列变量对象组成。注意,所有作用域链的最末端都为全局变量对象。所以作用域作用域链都是在当前运行环境内代码执行前就确定了。 什么是作用域(Scope)? 作用域产生于程序源代码中定义变量的区域,在程序编码阶段就确定了。javascript 中分为全局作用域(Global...

    whidy 评论0 收藏0
  • 讲清之javascript作用域

    摘要:并且作用域链也确定了在当前上下文中查找标识符后返回的值。为了具象化分析问题,我们可以假设作用域链是一个数组,数组成员有一系列变量对象组成。注意,所有作用域链的最末端都为全局变量对象。所以作用域作用域链都是在当前运行环境内代码执行前就确定了。 什么是作用域(Scope)? 作用域产生于程序源代码中定义变量的区域,在程序编码阶段就确定了。javascript 中分为全局作用域(Global...

    jonh_felix 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<