最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JS事件轮询机制讲解

来源:动视网 责编:小采 时间:2020-11-27 19:58:18
文档

JS事件轮询机制讲解

JS事件轮询机制讲解:JS是单线程语言,深入理解JS里的Event Loop,本文主要和大家分享JS事件轮询机制,希望能帮助到大家。JS的执行机制(一):1.首先判断JS是同步还是异步,同步就进入主进程,异步就进入event table2.异步任务在event table中注册函数,当满足触发条件后,被推
推荐度:
导读JS事件轮询机制讲解:JS是单线程语言,深入理解JS里的Event Loop,本文主要和大家分享JS事件轮询机制,希望能帮助到大家。JS的执行机制(一):1.首先判断JS是同步还是异步,同步就进入主进程,异步就进入event table2.异步任务在event table中注册函数,当满足触发条件后,被推


JS是单线程语言,深入理解JS里的Event Loop,本文主要和大家分享JS事件轮询机制,希望能帮助到大家。

JS的执行机制(一):

1.首先判断JS是同步还是异步,同步就进入主进程,异步就进入event table

2.异步任务在event table中注册函数,当满足触发条件后,被推入event queue

3.同步任务进入主线程后一直执行,直到主线程空闲时,才会去event queue中查看是否有可执行的异步任务,如果有就推入主进程中

JS的执行机制(二)

1.执行一个宏任务,过程中如果遇到微任务,就将其放到微任务的【事件队列】里

2.当前宏任务执行完成后,会查看微任务的【事件队列】,并将里面全部的微任务依次执行完

任务划分方式:

1.macro-task(宏任务):script,setTimeout,setInterval

2.micro-task(微任务):Promise,process.nextTick

我们从一道小题目出发

for (var i=0;i<=5;i++){
 setTimeout(()=>{console.log(i)},1000)
}

输出结果应该是1s之后连续打印6个6,虽然这个题目的主要知识点是块级作用域,但非常适合用来引出事件轮询机制。因为setTimeout是异步任务,所以不会立即执行,它需要等到所有的同步任务执行完毕,即for循环结束,当i变为6时开始同时执行6个定时器,此时i指向值为6的全局变量,所以打印6,这就是JS执行机制(一)

加点难度,考虑JS执行机制(二)

// promise里面的函数是立即执行的// 分别
输出 2 3 5 4 1setTimeout(function () { console.log(1) },0);new Promise(function executor(resolve) { console.log(2); for(var i=0;i<10000;i++){ i==9999 && resolve(); } console.log(3); }).then(function () { console.log(4); }); console.log(5);

首先执行的第一个宏任务肯定是脚本(script),所以定时器会被跳过(不论你延迟几秒执行),紧接着执行Promise里面的内容,按顺序执行,先打印2,然后进行for循环,resolve()是异步回调函数,属于异步执行的内容,同时如我们在任务划分里面提到的,Promise属于微任务,所以会在宏任务结束之后清空微任务事件队列,所以接下来会打印3,5,4。
至此第一个宏任务便处理完毕,然后才会轮到定时器。

文档

JS事件轮询机制讲解

JS事件轮询机制讲解:JS是单线程语言,深入理解JS里的Event Loop,本文主要和大家分享JS事件轮询机制,希望能帮助到大家。JS的执行机制(一):1.首先判断JS是同步还是异步,同步就进入主进程,异步就进入event table2.异步任务在event table中注册函数,当满足触发条件后,被推
推荐度:
标签: 事件 js 解析
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top