js事件循环中我有一些迷惑的点,我举个例子,帮我看看这个例子中哪里描述有问题,如果有该怎么理解:js的事件列队中包含:宏任务列队和微任务列队(这样说是否正确),宏任务列队中有三个宏任务?微任务列队中有4个微任务,当执行栈清空后,先查找任务列队中的宏任务,拿出第一个宏任务执行,执行完成后浏览器执行渲染(只要宏任务结束后浏览器都会进行重新渲染吗?),此时,开始执行微任务(将四个微任务都执行完,是这样吗?)微任务都执行完后,再去宏任务列队中取出第二个宏任务执行,执行完后发浏览器渲染,发现没有可执行的微任务,继续查找执行第三个微任务
2 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
和你描述的差不多,宏任务中的微任务是一次性执行完的,当前宏任务的微任务执行完,检查渲染,然后GUI线程接管渲染;渲染完后JS线程接管,继续等待下次宏任务,这一过程就叫事件循环。
繁星coding
TA贡献1797条经验 获得超4个赞
简单说就这样:事件循环1->宏任务队列顶部任务->微任务队列所有任务->控制权交还给主进程->事件循环2->...所以你这个描述大体应该没什么问题,但我说另外一点你没有说到的,就是微任务之间虽然在一次循环中全部会被执行,但任务之间有优先级差别,我印象中如果没有记错的话,process.nextTick和Promise就有区别,前者比后者会高。
添加回答
举报
0/150
提交
取消