网站建设方案实验报告,网站建设ppt下载,哪里有网站建设加工,网站规划具体内容Vue.nextTick() 实现原理 由于 Vue 的异步更新机制#xff0c;当我们修改数据后立即获取DOM#xff0c;获取到的是数据修改之前的DOM#xff0c;如果想要获取数据更新后的 DOM#xff0c;就需要使用Vue.nextTick() 方法 实现原理 Vue.nextTick() 方法的实现原理是基于浏览器…Vue.nextTick() 实现原理 由于 Vue 的异步更新机制当我们修改数据后立即获取DOM获取到的是数据修改之前的DOM如果想要获取数据更新后的 DOM就需要使用Vue.nextTick() 方法 实现原理 Vue.nextTick() 方法的实现原理是基于浏览器事件循环包括宏任务和微任务队列采用微任务优先的方式。
当我们修改数据时Vue 会将 DOM 更新操作放到一个异步任务队列中等待下一次事件循环时执行。而 Vue.nextTick() 方法则是将一个回调函数推入到异步任务队列中等待 DOM 更新完成后执行。
具体实现方式有以下几种: ① 在 Vue中如果浏览器支持 Promise则会优先使用
② 如果不支持 Promise则会使用原生的 setTimeout 方法模拟异步操作
③ 如果浏览器支持 MutationObserverVue 会使用 MutationObserver 监听 DOM 更新并在 DOM 更新完成后执行回调函数。
④ 使用 setlmmediate: 在 lE 中setlmmediate 方法可以用来延迟异步执行任务。在 Vue2.x 中如果浏览器支持 setlmmediate则会优先使用 setlmmediate否则会使用 setTimeout。 源码中定义了一个异步逻辑函数采用优雅降级的方式 先判断浏览器是否支持 Promise如果支持则优先使用 Promise.then() 方法来触发执行回调函数 否则判断是否支持MutationObserver支持的话就会实例化一个观察者对象观察文本节点发生变化时执行回调函数 如果都不支持则看下当前是否是IE, 如果是就会采用 setlmmediate 来延迟异步执行任务 如果再不支持会利用 setTimeout 设置延时为0。