We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
写在前面的话, 或许本文的标题有过, 但并不是意在抹黑、贬低之意, 谁没有点过去呢, vue 也在实现 nextTick 走过的"弯"路. 本文重在陈述 nextTick 每个阶段重要实现的阶段.
nextTick
在查阅求真 Vue nextTick 背后机制相关博文资料之时, 总会出现一些相佐的意见:
如果再不去了解源码改动历史, 是无法跳出这个疑问阶层.
v2.4 专一
在 Vue v2.4 及之前很长一段时期里, nextTick 背后实现机制是 Microtask .
v2.5 "两次"革命
MacroTask 崛起时期
使用全新的降级方案: setImmediate -> MessageChannel -> Promise -> setTimeout
革命原因: Vue 源码说明非常透彻, 在之前的 2.4, 使用 Microtask 机制, 但是 Microtask 优先级过高, 它可能触发在: 顺序发生的事件、甚至是同一事件源冒泡监听回调之间
至于 Vue 当时为什么选择 setImmediate 为优先, 或许可以从 Node.js 官网中 Event Loop 介绍中 得到一些佐证.
poll
check
读v2.5.1 源码
Macrotask/Microtask 并举期( MacroTask 补丁时期 )
两类降级方案:
内部实现的特征
microTimerFunc
macroTimerFunc
v2.6 统一
further:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
写在前面的话, 或许本文的标题有过, 但并不是意在抹黑、贬低之意, 谁没有点过去呢, vue 也在实现 nextTick 走过的"弯"路.
本文重在陈述
nextTick
每个阶段重要实现的阶段.Preface
求真之旅
在查阅求真 Vue
nextTick
背后机制相关博文资料之时, 总会出现一些相佐的意见:如果再不去了解源码改动历史, 是无法跳出这个疑问阶层.
nextTick 的迭代阶段
v2.4 专一
在 Vue v2.4 及之前很长一段时期里,
nextTick
背后实现机制是 Microtask .v2.5 "两次"革命
MacroTask 崛起时期
使用全新的降级方案: setImmediate -> MessageChannel -> Promise -> setTimeout
革命原因: Vue 源码说明非常透彻, 在之前的 2.4, 使用 Microtask 机制, 但是 Microtask 优先级过高, 它可能触发在: 顺序发生的事件、甚至是同一事件源冒泡监听回调之间
至于 Vue 当时为什么选择 setImmediate 为优先, 或许可以从 Node.js 官网中 Event Loop 介绍中 得到一些佐证.
poll
、check
Phases ).读v2.5.1 源码
Macrotask/Microtask 并举期( MacroTask 补丁时期 )
两类降级方案:
内部实现的特征
microTimerFunc
、macroTimerFunc
, 默认使用microTimerFunc
v2.6 统一
- 忍受 microtasks 高优先级带来某些场景下优先执行
- 这些场景可在业务中用一些 变通方式处理
总结
further:
The text was updated successfully, but these errors were encountered: