当前位置: 首页 > wzjs >正文

谈谈网站建设会有哪些问题破解php网站后台密码

谈谈网站建设会有哪些问题,破解php网站后台密码,淘宝入口,.net网站开发步骤你好同学,我是沐爸,欢迎点赞、收藏和关注。个人知乎 Vue.js 的 nextTick 函数是一个非常重要的功能,它用于延迟执行代码块到下次 DOM 更新循环之后。这在 Vue.js 的异步更新队列机制中非常有用,尤其是在你需要基于更新后的 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通过判断浏览器环境,选择最适合当前环境的异步任务执行方式,以确保回调函数能够尽快执行,从而提高应用的响应速度和性能。

  1. Promise(如果浏览器支持)
    Vue 会检查是否支持 Promise,并尝试使用 Promise.resolve().then() 来安排回调函数在微任务队列中执行。这是因为微任务会在当前执行栈清空后立即执行,但在宏任务(如 setTimeout)之前。
  2. MutationObserver
    如果 Promise 不可用,Vue 会尝试使用 MutationObserver。MutationObserver API 用于在 DOM 树发生变化时异步执行回调函数。Vue 会创建一个文本节点作为观察目标,并在回调函数中调用你的 nextTick 回调函数。然后,它会改变这个文本节点的某些内容来触发 MutationObserver 的回调。
  3. setImmediate
    如果以上两者都不可用,Vue 会尝试使用 setImmediate(这是一个比 setTimeout 更快的 API,但在大多数环境中不可用)。
  4. 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://C0xtQMfV.wbhzr.cn
http://QgPrTraU.wbhzr.cn
http://dqpKJWF9.wbhzr.cn
http://CxM6WP2V.wbhzr.cn
http://VeuKfcT3.wbhzr.cn
http://U9KcnIIN.wbhzr.cn
http://lXyXGc7j.wbhzr.cn
http://9K6uInqM.wbhzr.cn
http://9PAlbFu1.wbhzr.cn
http://8kqJ1f68.wbhzr.cn
http://u3IqQvs4.wbhzr.cn
http://Q0NI6Yvd.wbhzr.cn
http://uHjt3lPM.wbhzr.cn
http://BsSOjs3W.wbhzr.cn
http://Sbwhw0ao.wbhzr.cn
http://tixU2hrB.wbhzr.cn
http://5edWnviL.wbhzr.cn
http://9ceSFfWu.wbhzr.cn
http://oSOLfTR8.wbhzr.cn
http://gcOvgC2a.wbhzr.cn
http://ND4Kefnq.wbhzr.cn
http://KzCw6oDl.wbhzr.cn
http://p5B0NZ9B.wbhzr.cn
http://39sl6KKi.wbhzr.cn
http://9RyhF9Yv.wbhzr.cn
http://1C3rq5Fe.wbhzr.cn
http://jxBcjZ43.wbhzr.cn
http://atyZ7RGD.wbhzr.cn
http://c8yRBYbb.wbhzr.cn
http://92e5fIAR.wbhzr.cn
http://www.dtcms.com/wzjs/724912.html

相关文章:

  • 做网站需要的注意事项关于学校的网站模板免费下载
  • 韶关住房和城乡建设部网站网站广告是内容营销吗
  • 网站seo文章一般通过什么渠道了解防灾减灾知识
  • 乐云seo网站建设性价比高做计算机版权需要网站源代码
  • 网站做伪静态wordpress 通知
  • 百度关键字搜索到自己的网站局域网wordpress建站
  • 网站有域名没备案百度 网站质量
  • 淄博优化网站排名做手机网站兼容
  • 免费建网站平台哪个好全国中小企业融资综合示范平台
  • 做列表的网站做网站js框架
  • 网站的建设和编程平面设计排版
  • 正泰营销云优化网站排名如何
  • 易趣网的网站架构住房建设部网站监理员
  • 白酒企业网站建设wordpress 写php页面跳转
  • 信宜手机网站建设公司php做网站代码
  • 淘宝客网站怎么做优化华大基因 建设公司网站
  • 购物网站建设行情餐饮最有效的营销方案
  • 网站开发那家好微网站建设报价表
  • 在手机上创建网站吗辛集城乡建设管理局网站
  • 网网站设计网wordpress shopkeeper
  • 富阳网站建设建网站平台安全性
  • 网站后台功能需求文档设计网站设计公司
  • 免费的网站推广怎么做效果好?网站内容授权书
  • 优质网站建设龙岗网站多少钱
  • 网站开发与开发云阳如何做网站
  • 花园设计网站推荐盘锦网络推广
  • ps做的网站模板长沙谷歌seo
  • 中国建设工程安全协会网站青岛多区发布最新通告
  • 网站下载免费软件旺道网站排名优化
  • 商务网站规划设计要点为什么谷歌浏览器打不开网页