如何简单理解vue的NextTick

它干啥的?

nextTick 中文意思:下一个敲击点。由于vue的响应式是异步的,那么当我们想在所有组件渲染结束后做一下"自己的事情",所以就有了nextTick这个方法。这也就弥补了有一种情况mounted这个生命周期钩子满足不了需求,比如在子组件种操作父组件的dom,子组价的mounted就使不上劲啦。

核心是啥?

1.利用js的事件循环机制,2.源码主要判断当前设备环境支持的异步方法,将回调函数放入数组中,当vue渲染结束,依次执行数组中存放的事件。

解释一下上面的知识点:

① JS 事件循环机制

由于JS是单线程应用,所以按常理代码应该是自上到下依次执行。可是呢实际情况中会遇到异步的情况,比如开了一个定时器,请求了一个接口等。遇到这种情况,JS会把这些事件先放到一个地方存起来。后面继续执行任务,如果再遇到异步任务再存起来,等到从上到下的任务都执行结束,再依次执行存储的异步任务。 异步任务分为宏任务和微任务。放入不同的地方存起来,执行顺序是先微任务再宏任务。

那"循环"体现在哪?

循环就是:当发现当线程的执行的任务结束,如果没有宏任务,取出队列的异步任务执行,然后再走到"当发现当线程的执行的任务结束"。循环至队列中的异步任务结束。

网上下的图,侵权必删

② 方法逻辑和核心源码

逻辑:主要逻辑就是由于js的事件循环机制,当我们想在dom渲染结束之后做一些事情,那么声明一个方法,把要做事情当做参数,然后创建异步任务,利用事件循环再执行那些事情。

核心源码:nextTick 方法参数是一个函数,把这个函数放入callbacks 数组中,优雅降等级判断设备支持的异步方法。优先级为:promise > MutationObserver > setImmediate>setTimout()。flushCallbacks利用当前支持的异步方法执行nextTick存储的任务,

相关推荐
IT_陈寒23 分钟前
Python开发者必看:这5个鲜为人知的Pandas技巧让你的数据处理效率提升50%
前端·人工智能·后端
豆苗学前端32 分钟前
写给女朋友的第一封信,测试方法概论
前端·后端·设计模式
半桶水专家1 小时前
Vue 3 插槽(Slot)详解
前端·javascript·vue.js
袁煦丞1 小时前
本地AI绘画神器+全局访问——Stable Diffusion WebUI 成功突破:cpolar内网穿透实验室第462个成功挑战
前端·程序员·远程工作
一枚前端小能手1 小时前
🏗️ JavaScript类深度解析 - 从构造函数到现代特性的完整指南
前端·javascript
袁煦丞1 小时前
家用NAS+云盘自由NanoPi R4S+iStoreOS:cpolar内网穿透实验室第460个成功挑战
前端·程序员·远程工作
浏览器API调用工程师_Taylor1 小时前
日报自动化实战:告别手动复制粘贴
前端·javascript·node.js
晴殇i1 小时前
JavaScript还能这样写?!ES2025新语法让代码优雅到极致
前端·javascript·程序员
浏览器API调用工程师_Taylor2 小时前
我是如何将手动的日报自动化的☺️☺️☺️
前端·javascript·爬虫
东哥很忙XH2 小时前
flutter开发的音乐搜索app
android·javascript·flutter