看了很多教程,都说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
个人理解:
process.nextTick是node中的方法,而在浏览器中执行时,会退化成setTimeout,所以最慢;
vue.$nextTick和watch使用的都是promise,所以这三个会比较快。