<template>
<div>
<ul>
<li v-for="item in list1">{{item}}</li>
</ul>
<ul>
<li v-for="item in list2">{{item}}</li>
</ul>
<ol>
<li v-for="item in list3">{{item}}</li>
</ol>
<ol>
<li v-for="item in list4">{{item}}</li>
</ol>
<ol>
<li v-for="item in list5">{{item}}</li>
</ol>
</div>
</template>
<script type="text/javascript">
export default {
data() {
return {
list1: [],
list2: [],
list3: [],
list4: [],
list5: []
}
},
created() {
this.composeList12()
this.composeList34()
this.composeList5()
this.$nextTick(function() {
// DOM 更新了
console.log(‘finished test ‘ + new Date().toString())
console.log(document.querySelectorAll(‘li‘).length)
})
},
methods: {
composeList12() {
let me = this
let count = 10000
for (let i = 0; i < count; i++) {
Vue.set(me.list1, i, ‘I am a 测试信息~~啦啦啦‘ + i)
}
console.log(‘finished list1 ‘ + new Date().toString())
for (let i = 0; i < count; i++) {
Vue.set(me.list2, i, ‘I am a 测试信息~~啦啦啦‘ + i)
}
console.log(‘finished list2 ‘ + new Date().toString())
this.$nextTick(function() {
// DOM 更新了
console.log(‘finished tick1&2 ‘ + new Date().toString())
console.log(document.querySelectorAll(‘li‘).length)
})
},
composeList34() {
let me = this
let count = 10000
for (let i = 0; i < count; i++) {
Vue.set(me.list3, i, ‘I am a 测试信息~~啦啦啦‘ + i)
}
console.log(‘finished list3 ‘ + new Date().toString())
this.$nextTick(function() {
// DOM 更新了
console.log(‘finished tick3 ‘ + new Date().toString())
console.log(document.querySelectorAll(‘li‘).length)
})
setTimeout(me.setTimeout1, 0)
},
setTimeout1() {
let me = this
let count = 10000
for (let i = 0; i < count; i++) {
Vue.set(me.list4, i, ‘I am a 测试信息~~啦啦啦‘ + i)
}
console.log(‘finished list4 ‘ + new Date().toString())
me.$nextTick(function() {
// DOM 更新了
console.log(‘finished tick4 ‘ + new Date().toString())
console.log(document.querySelectorAll(‘li‘).length)
})
},
composeList5() {
let me = this
let count = 10000
this.$nextTick(function() {
// DOM 更新了
console.log(‘finished tick5-1 ‘ + new Date().toString())
console.log(document.querySelectorAll(‘li‘).length)
})
setTimeout(me.setTimeout2, 0)
},
setTimeout2() {
let me = this
let count = 10000
for (let i = 0; i < count; i++) {
Vue.set(me.list5, i, ‘I am a 测试信息~~啦啦啦‘ + i)
}
console.log(‘finished list5 ‘ + new Date().toString())
me.$nextTick(function() {
// DOM 更新了
console.log(‘finished tick5 ‘ + new Date().toString())
console.log(document.querySelectorAll(‘li‘).length)
})
}
}
}
</script>

对vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制
原文:https://www.cnblogs.com/thomas-yang-github/p/11341884.html