vue的setTimeout、nextTick、process.nextTick等执行的先后顺序

看了很多教程,都说process.nextTick是最先执行的,但我自己跑的时候却是最后执行的。
vue的nextTick按理说优先使用promise,但我跑的时候也是比较后执行的。
watch的执行又应该属于哪一种任务呢,Object.observe吗?

export default {
  data() {
    return {
      a = false
    }
  }
  watch: {
    a() {
      console.log("watch")
    }
  }
  methods: {
    myprint() {
      this.a = true
      setTimeout(() => console.log("settimeout"), 0)
      this.$nextTick(() => console.log("vue nexttick"))
      process.nextTick(() => console.log("process.nexttick"))
      Promise.resolve().then(() => console.log("promise"))
      console.log("start")
    }
  }

打印出来结果为:

start
promise
watch
vue nexttick
settimeout
process.nexttick
阅读 5.9k
2 个回答

个人理解:
process.nextTick是node中的方法,而在浏览器中执行时,会退化成setTimeout,所以最慢;
vue.$nextTick和watch使用的都是promise,所以这三个会比较快。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题