关于这个课程的问题

来源:4-9 nextTick

六一888

2020-01-06

以下是对宏任务和微任务的理解:异步任务分为宏任务和微任务,在每一次事件循环中,每次先从宏任务队列中的一个宏任务入栈,然后再提取微任务队列中的所有微任务入栈,由于堆栈是后进先出的原则,因此会先执行微任务再执行宏任务。

不是很明白视频中所说的在下一个 tick 中才会执行 flushCallbacks,是一次只执行一次宏任务么?不是很懂

看了问答区老师的回答,搞清楚了 tick 指的是执行当前的同步 JS 的时机,也就是说在一个事件循环中,JS 先执行了所有同步任务,然后再去执行 nextTick 这个异步任务,根据浏览器的支持程度,可能执行的是宏任务也可能执行的是微任务,所以也就执行到了 flushCallbacks 函数,这又是一个同步任务的执行过程,所以叫作下一个 tick ? 不直到这样理解对不对。

写回答

2回答

ustbhuangyi

2020-01-06

先执行宏任务,再执行微任务,然后更新视图。
可以参考这个讨论:https://github.com/ustbhuangyi/vue-analysis/issues/63

1
5
weixin_慕盖茨1387255
回复
ustbhuangyi
为什么setTimeout 回调中的函数是下一个宏任务执行,那当前的宏任务是什么呢
2020-08-08
共5条回复

六一888

提问者

2020-05-31

,,,

0
0

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程