账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Vue watcher非同步更新的问题
    25
    0

    问题描述

    Vue中,如果wather不是同步更新的话,会放到一个队列中,同一事件循环结束后再更新。相关代码再scheduler的queueWatcher方法中。
    这里面处理一个场景:
    当这个队列正在更新时,又触发了wather。

      if (!flushing) {
          queue.push(watcher)
        } else {
          let i = queue.length - 1
          while (i > index && queue[i].id > watcher.id) {
            i--
          }
          queue.splice(i + 1, 0, watcher)
        }
      }

    不明白为什么要这么处理。直接push到最后不行吗?
    现在这样的设计又有什么好处?

    追加描述,
    vue这段代码也并不是同一个时间循环中,还没执行这个wather,再次触发这个wather就只执行一次。

         queue.splice(i + 1, 0, watcher)

    这边是知道这个wather之前的index,并把第二次触发放到这个后面。也还是执行两次update。既然都是执行两次,为什么不直接push到最后

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 一叶墨痕 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部