为了账号安全,请及时绑定邮箱和手机立即绑定

关于 Vue 源码中 flushSchedulerQueue 和 nextTick 执行顺序的问题

关于 Vue 源码中 flushSchedulerQueue 和 nextTick 执行顺序的问题

杨__羊羊 2019-03-11 21:48:50
先看下代码示例:<template>   <div ref="box">{{content}}</div></template><script>export default {   data() {    return {      content: 'before'     }   },   mounted() {    this.nextTick(() => {      console.log(this.$refs.box.innerHTML) // after     })    this.content = 'after'     this.nextTick(() => {      console.log(this.$refs.box.innerHTML) // after     })   } }</script>这两天又重新看了下 Vue 的源码,nextTick(cb)会把cb push到callbacks中,而 this.content = 'after'也会把依赖content的watcher的执行函数flushSchedulerQueue push到callbacks中,接下来在同步代码执行完毕后一并flushCallbacks。这样说的话例子中第一个console.log(this.$refs.box.innerHTML)执行的时候content并未更新啊,为什么输出after呢?更新一下,我通过script标签引入Vue的话,则输出是before和after,但如果通过webpack构建运行的话,则输出都是after,费解。。。
查看完整描述

2 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

你第一个是after?

查看完整回答
反对 回复 2019-03-11
  • 2 回答
  • 0 关注
  • 1707 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号