nexttick(nextTick实现原理)
本文目录
nextTick实现原理
因为 vue 采用的异步更新策略,当监听到数据发生变化的时候不会立即去更新DOM, 而是开启一个任务队列,并缓存在同一事件循环中发生的所有数据变更; 这种做法带来的好处就是可以将多次数据更新合并成一次,减少操作DOM的次数, 如果不采用这种方法,假设数据改变100次就要去更新100次DOM,而频繁的DOM更新是很耗性能的; nextTick 接收一个回调函数作为参数,并将这个回调函数延迟到DOM更新后才执行; 使用场景:想要操作 基于最新数据的生成DOM 时,就将这个操作放在 nextTick 的回调中; 将传入的回调函数包装成异步任务,异步任务又分微任务和宏任务,为了尽快执行所以优先选择微任务; nextTick 提供了四种异步方法 Promise.then、MutationObserver、setImmediate、setTimeOut(fn,0)
nextTick的原理
什么是nextTick呢? nextTick,我可以理解为next是下一个的意思,在事件循环中,每进行一次循环操作称为 tick 就是下一个事件循环操作,也就是下一个宏任务 nextTick实现原理 因为目前浏览器平台并没有实现 nextTick 方法,所以 Vue.js 源码中分别用 Promise、setTimeout等方式在 microtask(或是task)中创建一个事件,目的是在当前调用栈执行完毕以后(不一定立即)才会去执行这个事件 我们要知道vue里面有一个虚拟dom,页面上所有的操作都是先改变虚拟dom,最后再把虚拟dom更新到实际的页面dom上,这个时候就会涉及到到一个问题,什么时候才是最后? 这个时候就会涉及到JS事件执行机制中的宏任务和微任务 个人理解的步骤应该是这样的: 1、执行完当前宏任务script,立即执行微任务 2、微任务执行完毕后进行页面渲染 3、页面渲染完毕,开始执行$nextTick
更多文章:
联想think pad官网(联想think pade480怎样在网页上下载软件)
2024年6月30日 14:16
联想天逸100什么时候上市的(联想天逸100-15ibd是游戏本么)
2024年9月26日 03:20
acer强制恢复出厂设置win7(宏基acer恢复出厂设置win7)
2024年7月30日 23:40
佳能g3820和g3821区别?回归摄影之本!海量实物照详解佳能G11
2023年6月11日 01:00
华硕x84hr笔记本电脑(新买的华硕X84hr笔记本电脑开机为什么很慢)
2023年12月15日 03:35
联想台式机如何开启vt(联想如何开启vt 以下7个步骤教你解决)
2024年6月15日 22:10
戴尔inspiron3437(dell inspiron 14 3437 如何安装XP系统)
2024年4月24日 11:25
东芝笔记本无法进入系统(东芝笔记本电脑开机就出现如图这样进不了系统怎么回事,求大神求救)
2024年4月27日 16:10
华硕n45sl(华硕n45sl无线网搜不到信号,无线网开关开了,可信号灯也不亮,这是什么情况啊)
2024年6月2日 06:35
戴尔1545pp41l(我的电脑型号是,dell,PP41Linspiron1545.)
2024年5月28日 11:16
华硕a40j配置参数(华硕A40j采用了什么处理器,整机性能如何)
2023年8月24日 19:50