首页 > 社交 > 科普中国

Vue

常驻编辑 科普中国 2022-10-17 华为   队列   函数   原始   定义   作用   事件   操作   发现   数据
DOM结构)
  • 第二个参数为:执行函数上下文
  • // 修改数据
    vm.message = '修改后的值'
    // DOM 还没有更新
    console.log(vm.$el.textContent) // 原始的值
    Vue.nextTick(function () {
      // DOM 更新了
      console.log(vm.$el.textContent) // 修改后的值
    })

    组件内使用 vm.$nextTick() 实例方法只需要通过this.$nextTick(),并且回调函数中的 this 将自动绑定到当前的 Vue 实例上CNq拜客生活常识网

    this.message = '修改后的值'
    console.log(this.$el.textContent) // => '原始的值'
    this.$nextTick(function () {
        console.log(this.$el.textContent) // => '修改后的值'
    })

    $nextTick() 会返回一个 Promise 对象,可以是用async/await完成相同作用的事情CNq拜客生活常识网

    this.message = '修改后的值'
    console.log(this.$el.textContent) // => '原始的值'
    await this.$nextTick()
    console.log(this.$el.textContent) // => '修改后的值'

    三、实现原理

    源码位置:/src/core/util/next-tick.jsCNq拜客生活常识网

    callbacks也就是异步操作队列CNq拜客生活常识网

    callbacks新增回调函数后又执行了timerFunc函数,pending是用来标识同一个时间只能执行一次CNq拜客生活常识网

    export function nextTick(cb?: Function, ctx?: Object) {
      let _resolve;
    
      // cb 回调函数会经统一处理压入 callbacks 数组
      callbacks.push(() => {
        if (cb) {
          // 给 cb 回调函数执行加上了 try-catch 错误处理
          try {
            cb.call(ctx);
          } catch (e) {
            handleError(e, ctx, 'nextTick');
          }
        } else if (_resolve) {
          _resolve(ctx);
        }
      });
    
      // 执行异步延迟函数 timerFunc
      if (!pending) {
        pending = true;
        timerFunc();
      }
    
      // 当 nextTick 没有传入函数参数的时候,返回一个 Promise 化的调用
      if (!cb && typeof Promise !== 'undefined') {
        return new Promise(resolve => {
          _resolve = resolve;
        });
      }
    }

    timerFunc函数定义,这里是根据当前环境支持什么方法则确定调用哪个,分别有:CNq拜客生活常识网

    Promise.thenMutationObserversetImmediatesetTimeout

    相关阅读:

  • 华为天际通流量卡能插手机吗
  • nova9没有5g版
  • 华为nova9支持鸿蒙吗
  • mix4和mate40选哪个
  • 华为nova10会出吗2021
  • 华为手机字体怎么改(华为手机怎么调整字体样式)
  • 华为怎么开热点(华为手机怎么开热点给别人连)
  • 手机桌面停止运行怎么办(华为桌面崩溃)
  • 华为笔记本电脑怎么样(四五千买华为还是华硕笔记本)
  • 手机进水怎么处理(华为一体机手机进水怎么办)
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。