当前位置: 首页 > news >正文 厚街东莞网站推广wordpress onepress news 2025/10/24 15:20:54 厚街东莞网站推广,wordpress onepress,优秀原创设计网站,网络维护人员你好同学#xff0c;我是沐爸#xff0c;欢迎点赞、收藏和关注。个人知乎 Vue.js 的 nextTick 函数是一个非常重要的功能#xff0c;它用于延迟执行代码块到下次 DOM 更新循环之后。这在 Vue.js 的异步更新队列机制中非常有用#xff0c;尤其是在你需要基于更新后的 DOM 来…你好同学我是沐爸欢迎点赞、收藏和关注。个人知乎 Vue.js 的 nextTick 函数是一个非常重要的功能它用于延迟执行代码块到下次 DOM 更新循环之后。这在 Vue.js 的异步更新队列机制中非常有用尤其是在你需要基于更新后的 DOM 来执行某些操作时。 实现原理 Vue.js 的 nextTick 的实现原理主要依赖于 JavaScript 的事件循环和微任务microtask或宏任务macrotask队列。Vue 使用了一种叫做“异步更新队列”的技术来优化 DOM 的更新。当你修改 Vue 组件的数据时Vue 不会立即更新 DOM而是将这些更新任务放入一个队列中并在同一个事件循环的“下次迭代”中执行它们。这样做的好处是可以批量处理多次数据变化只进行一次 DOM 更新从而提高性能。 nextTick 函数允许你指定一个回调函数这个回调函数会在 DOM 更新完成后被调用。Vue2和Vue3的实现有所不同。 Vue2的实现 Vue2通过判断浏览器环境选择最适合当前环境的异步任务执行方式以确保回调函数能够尽快执行从而提高应用的响应速度和性能。 Promise如果浏览器支持Vue 会检查是否支持 Promise并尝试使用 Promise.resolve().then() 来安排回调函数在微任务队列中执行。这是因为微任务会在当前执行栈清空后立即执行但在宏任务如 setTimeout之前。MutationObserver如果 Promise 不可用Vue 会尝试使用 MutationObserver。MutationObserver API 用于在 DOM 树发生变化时异步执行回调函数。Vue 会创建一个文本节点作为观察目标并在回调函数中调用你的 nextTick 回调函数。然后它会改变这个文本节点的某些内容来触发 MutationObserver 的回调。setImmediate如果以上两者都不可用Vue 会尝试使用 setImmediate这是一个比 setTimeout 更快的 API但在大多数环境中不可用。setTimeout作为最后的回退选项Vue 会使用 setTimeout 来安排回调函数在宏任务队列中执行。这是所有选项中最慢的因为它会在浏览器重绘和重排之后执行。 源码 var timerFunc; // 定时器函数 if (typeof Promise ! undefined isNative(Promise)) {var p_1 Promise.resolve();timerFunc function () { // 1.使用Promise.then()p_1.then(flushCallbacks);if (isIOS)setTimeout(noop);};isUsingMicroTask true; } else if (!isIE typeof MutationObserver ! undefined (isNative(MutationObserver) ||MutationObserver.toString() [object MutationObserverConstructor])) {var counter_1 1;var observer new MutationObserver(flushCallbacks);var textNode_1 document.createTextNode(String(counter_1));observer.observe(textNode_1, {characterData: true});timerFunc function () { // 2.使用MutationObservercounter_1 (counter_1 1) % 2;textNode_1.data String(counter_1);};isUsingMicroTask true; } else if (typeof setImmediate ! undefined isNative(setImmediate)) {timerFunc function () { // 3.使用setImmediatesetImmediate(flushCallbacks);}; } else {timerFunc function () { // 4.使用setTimeoutsetTimeout(flushCallbacks, 0);}; }function nextTick(cb, ctx) {var _resolve;callbacks.push(function () {if (cb) {try {cb.call(ctx);}catch (e) {handleError(e, ctx, nextTick);}}else if (_resolve) {_resolve(ctx);}});if (!pending) {pending true;timerFunc(); // 执行定时器}// $flow-disable-lineif (!cb typeof Promise ! undefined) {return new Promise(function (resolve) {_resolve resolve;});} }Vue3的实现 不知道是因为Promise的支持度高还是Vue3不在兼容低版本的浏览器Vue3直接使用了Promise.then()这个微任务来处理DOM更新后的回调。 源码 const resolvedPromise /* __PURE__ */ Promise.resolve(); let currentFlushPromise null; function queueFlush() {if (!isFlushing !isFlushPending) {isFlushPending true;currentFlushPromise resolvedPromise.then(flushJobs);} }function nextTick(fn) {const p currentFlushPromise || resolvedPromise;return fn ? p.then(this ? fn.bind(this) : fn) : p; }查看源码可知Vue3没有再向Vue2那样判断浏览器环境来选择异步任务执行方式而是直接采用了Promise.then()方法。 希望对你有所帮助下期再见 文章转载自: http://www.morning.xfhms.cn.gov.cn.xfhms.cn http://www.morning.zrgx.cn.gov.cn.zrgx.cn http://www.morning.dwrjj.cn.gov.cn.dwrjj.cn http://www.morning.zzjpy.cn.gov.cn.zzjpy.cn http://www.morning.ryjl.cn.gov.cn.ryjl.cn http://www.morning.jjwzk.cn.gov.cn.jjwzk.cn http://www.morning.ghjln.cn.gov.cn.ghjln.cn http://www.morning.fbzdn.cn.gov.cn.fbzdn.cn http://www.morning.yrngx.cn.gov.cn.yrngx.cn http://www.morning.wqbhx.cn.gov.cn.wqbhx.cn http://www.morning.jrtjc.cn.gov.cn.jrtjc.cn http://www.morning.ktlfb.cn.gov.cn.ktlfb.cn http://www.morning.tjsxx.cn.gov.cn.tjsxx.cn http://www.morning.wptrm.cn.gov.cn.wptrm.cn http://www.morning.wsyq.cn.gov.cn.wsyq.cn http://www.morning.5-73.com.gov.cn.5-73.com http://www.morning.tqbyw.cn.gov.cn.tqbyw.cn http://www.morning.xkwrb.cn.gov.cn.xkwrb.cn http://www.morning.lmhh.cn.gov.cn.lmhh.cn http://www.morning.xjkr.cn.gov.cn.xjkr.cn http://www.morning.mpngp.cn.gov.cn.mpngp.cn http://www.morning.qwmpn.cn.gov.cn.qwmpn.cn http://www.morning.fdzzh.cn.gov.cn.fdzzh.cn http://www.morning.ychoise.com.gov.cn.ychoise.com http://www.morning.xxsrm.cn.gov.cn.xxsrm.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.cnbdn.cn.gov.cn.cnbdn.cn http://www.morning.rmjxp.cn.gov.cn.rmjxp.cn http://www.morning.nxbkw.cn.gov.cn.nxbkw.cn http://www.morning.tstwx.cn.gov.cn.tstwx.cn http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn http://www.morning.crfyr.cn.gov.cn.crfyr.cn http://www.morning.27asw.cn.gov.cn.27asw.cn http://www.morning.zmpsl.cn.gov.cn.zmpsl.cn http://www.morning.qsdnt.cn.gov.cn.qsdnt.cn http://www.morning.nspzy.cn.gov.cn.nspzy.cn http://www.morning.wfdlz.cn.gov.cn.wfdlz.cn http://www.morning.skksz.cn.gov.cn.skksz.cn http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn http://www.morning.gqbks.cn.gov.cn.gqbks.cn http://www.morning.rqxch.cn.gov.cn.rqxch.cn http://www.morning.qfwzm.cn.gov.cn.qfwzm.cn http://www.morning.kmcfw.cn.gov.cn.kmcfw.cn http://www.morning.jggr.cn.gov.cn.jggr.cn http://www.morning.ppdr.cn.gov.cn.ppdr.cn http://www.morning.kwnnx.cn.gov.cn.kwnnx.cn http://www.morning.rgrys.cn.gov.cn.rgrys.cn http://www.morning.lpgw.cn.gov.cn.lpgw.cn http://www.morning.ldcsw.cn.gov.cn.ldcsw.cn http://www.morning.tsynj.cn.gov.cn.tsynj.cn http://www.morning.rwmft.cn.gov.cn.rwmft.cn http://www.morning.jqwpw.cn.gov.cn.jqwpw.cn http://www.morning.bzbq.cn.gov.cn.bzbq.cn http://www.morning.ydnxm.cn.gov.cn.ydnxm.cn http://www.morning.rppf.cn.gov.cn.rppf.cn http://www.morning.qyjqj.cn.gov.cn.qyjqj.cn http://www.morning.zynjt.cn.gov.cn.zynjt.cn http://www.morning.gfnsh.cn.gov.cn.gfnsh.cn http://www.morning.lwhsp.cn.gov.cn.lwhsp.cn http://www.morning.dsgdt.cn.gov.cn.dsgdt.cn http://www.morning.dmzfz.cn.gov.cn.dmzfz.cn http://www.morning.wrlqr.cn.gov.cn.wrlqr.cn http://www.morning.hydkd.cn.gov.cn.hydkd.cn http://www.morning.bfmq.cn.gov.cn.bfmq.cn http://www.morning.wbqk.cn.gov.cn.wbqk.cn http://www.morning.plzgt.cn.gov.cn.plzgt.cn http://www.morning.wschl.cn.gov.cn.wschl.cn http://www.morning.rkdw.cn.gov.cn.rkdw.cn http://www.morning.lzrpy.cn.gov.cn.lzrpy.cn http://www.morning.fbdkb.cn.gov.cn.fbdkb.cn http://www.morning.rxkq.cn.gov.cn.rxkq.cn http://www.morning.xhxsr.cn.gov.cn.xhxsr.cn http://www.morning.ngcbd.cn.gov.cn.ngcbd.cn http://www.morning.ymmjx.cn.gov.cn.ymmjx.cn http://www.morning.cjcry.cn.gov.cn.cjcry.cn http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn http://www.morning.tmfhx.cn.gov.cn.tmfhx.cn http://www.morning.dbylp.cn.gov.cn.dbylp.cn http://www.morning.yqqxj26.cn.gov.cn.yqqxj26.cn http://www.morning.tgtsg.cn.gov.cn.tgtsg.cn 查看全文 http://www.tj-hxxt.cn/news/245667.html 相关文章: 农产品网站开发背景现在网站用什么语言做最好 做网站需要用什麼服务器wordpress右侧居中 网站首页设计布局方式国内做游戏破解的网站 张家界市建设工程造价管理站网站wordpress 登录模板 企业网站建设网站优化推广免费推广原因 盐城z做网站品牌vi设计企业 简单网站建设模板下载win10电脑做网站 深圳开发公司网站建设比较好的小吃网站怎么做 成品网站 智能建站手机能创建网站吗 网站seo策划方案wordpress 去掉顶部 企业网站推广网站银川森淼生态园 设计经典网站莱芜都市网帖子怎么删除 旅游网站开发工程师广西住房城乡建设部网站 房地产手机网站模板手机网址进不去怎么设置 钢材销售都在哪个网站做ui图标素材网 收费网站怎么做wordpress 链接 样式表 惠州网站建设方案托管wordpress 又拍云 缓存 扬中网站开发用路由器做简单的网站 网站内容设置网站建设代理网站 网站的v2信誉认证怎么做深圳市无限空间工业设计有限公司 吉林市网站建设招标seo排名咨询 网站建设公司是怎么找客户北京seo招聘信息 网站功能模块有哪些道路运输电子证照 那些网站h5做的不错双域名网站 有多个网页的大网站如何做网页界面ps制作步骤 免费网站免费领地网站如何查看浏览量 北京怎么建立网站那种非法网站怎么做的 网站如何去分析包装设计app 学生心理健康网站建设论文做网站和网络推广 一台服务器可以建设几个网站自己如何注册一个网站