为了账号安全,请及时绑定邮箱和手机立即绑定

求大佬指点哈!js事件循环各位有什么建议?

求大佬指点哈!js事件循环各位有什么建议?

BIG阳 2019-09-26 09:56:44
js事件循环中我有一些迷惑的点,我举个例子,帮我看看这个例子中哪里描述有问题,如果有该怎么理解:js的事件列队中包含:宏任务列队和微任务列队(这样说是否正确),宏任务列队中有三个宏任务?微任务列队中有4个微任务,当执行栈清空后,先查找任务列队中的宏任务,拿出第一个宏任务执行,执行完成后浏览器执行渲染(只要宏任务结束后浏览器都会进行重新渲染吗?),此时,开始执行微任务(将四个微任务都执行完,是这样吗?)微任务都执行完后,再去宏任务列队中取出第二个宏任务执行,执行完后发浏览器渲染,发现没有可执行的微任务,继续查找执行第三个微任务
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

和你描述的差不多,宏任务中的微任务是一次性执行完的,当前宏任务的微任务执行完,检查渲染,然后GUI线程接管渲染;渲染完后JS线程接管,继续等待下次宏任务,这一过程就叫事件循环。
                            
查看完整回答
反对 回复 2019-09-26
?
繁星coding

TA贡献1797条经验 获得超4个赞

简单说就这样:
事件循环1->宏任务队列顶部任务->微任务队列所有任务->控制权交还给主进程->事件循环2->...
所以你这个描述大体应该没什么问题,但我说另外一点你没有说到的,就是微任务之间虽然在一次循环中全部会被执行,但任务之间有优先级差别,我印象中如果没有记错的话,process.nextTick和Promise就有区别,前者比后者会高。
                            
查看完整回答
反对 回复 2019-09-26
  • 2 回答
  • 0 关注
  • 343 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信