2017补全计划-事件队列-学习笔记

学习过程是这样的,找到一篇阮一峰的Event Loop的文章,结合自己以前看过的《JS高设》里面的介绍 又一次整体学习了事件队列

JavaScript运行机制详解:再谈Event Loop

但是,又找到这篇

【朴灵评注】JavaScript 运行机制详解:再谈Event Loop

再经过2次阅读之后,我发现,当时朴灵对阮一峰的指正只是说出了错在哪里,而没有找到他对整个知识点的解释(结尾有但是比较模糊)

所以我把综合2篇文章的学习总结为: 阮一峰文章传达的概念正确,但(可能)事实上这种抽象概念并不是用他解释的话去实现的。

下面是我简要总结一下事件队列的要点:

事件队列分3个模块:

  • DOM Binding 包括涉及DOM操作的一些callback函数
  • network 异步的callback函数
  • timer 包括seTimeout等计时函数

JS代码执行时候,分为 主线程(栈) 和 任务队列(队列),上述第1点的(1)(2)(3)属于任务队列

  • 所有同步任务在主线程中执行
  • 异步任务(我理解为需要调用callback函数时)有了结果就放去任务队列
  • 主线程的任务栈执行完后,就是调用任务队列,检查是否有新任务
  • 主线程不断循环上面三步

其中在timer模块中,seTimeout的定义是这样的:

  • 延时小的执行优先级高
  • 延时相同的函数优先级按注册顺序
  • 当设定延时为0时,也会被丢入事件队列中,等主线程的栈事件执行完再调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值