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

监控网站开发误入网站退不了怎么做

监控网站开发,误入网站退不了怎么做,17素材网下载,保定网站建设电话你好同学#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.hkea.cn/news/14285693/

相关文章:

  • 怎么下载自己做的网站网页制作三剑客包括
  • 苏州定制建站网站建设赣州网站建设优化服务
  • pc网站开发工具手机wap网站制作
  • thinkphp做的网站怎么打开网站建设前期资料提供
  • 织梦 网站地图 样式晋江市建设局网站
  • 做网站需要看的书wordpress 邮箱订阅
  • 公司创建网站多少钱嘉兴制作网站机构
  • 做网站王仁杰企业做网站推广
  • 济南网站制作哪家强最近出入上海最新规定
  • 网站收录提交入口官网好的php网站
  • 比较好的网站建设网站产品设计创意图片
  • 做链接的网站做一个网站要多少钱
  • 贵州建站管理系统博客类网站源码
  • 做影视网站侵权不南京网站高端
  • 重庆建设网站首页设计师应该知道的网站
  • 站长工具域名查询ip志愿者网站建设
  • 仙桃做网站的个人做外贸常用那几个网站
  • 张家港做网站收费标准seo排名赚能赚钱吗
  • 酒泉建设局造价官网站公司宣传片如何制作
  • 宜昌怎样优化网站建设免费wordpress资源
  • 如何上传文件到自己的网站网站更新文章首页不显示
  • 智能家居型网站开发广州市番禺区住房和建设局网站
  • 西安做网站首选白山镇seo快速排名
  • 上海企业网站建设报手机设置管理网站首页
  • 百度不收录哪些网站吗平台搭建与拆除流程
  • 广州网站建设+美词现在有专业做海鲜的网站没有
  • 淘客导购网站怎么做网站域名301设置
  • 网络公司网站源码写作网站有哪些
  • 电子商务网站系统建设实训心得小程序营销策划方案
  • 网站上传的图片怎么做的清晰东莞市建设