vue/js 优化代码
if (this.total > 3000) { setTimeout(() => {
this.$refs.multipleTable.doLayout()
}, 3000)
}
if (this.total > 4000) {
setTimeout(() => {
this.$refs.multipleTable.doLayout()
}, 4000)
}
if (this.total > 5000) {
setTimeout(() => {
this.$refs.multipleTable.doLayout()
}, 5000)
}
上面这段代码重复性很高,请教大神们如何就写成一段!
在这里先感谢各位大神们的解答,小弟感激不尽!
回答:
最大延迟 5000、同时是 1000 的整数倍呗?
if (this.total > 3000) { let ts = Math.min(parseInt(this.total / 1000) * 1000, 5000);
setTimeout(() => this.$refs.multipleTable.doLayout(), ts);
}
回答:
setTimeout(() => this.$refs.multipleTable.doLayout(), Math.floor(this.total/1000))
回答:
function fn (time) { if (this.total > time) {
setTimeout(() => {
this.$refs.multipleTable.doLayout()
}, time)
}
}
根据你的提问,可以转换成这样。但是我觉得这样子可能会触发多次doLayout。
我觉得可以改成下面这样:
function fn () { setTimeout(() => {
this.$refs.multipleTable.doLayout()
}, Math.floor(this.total / 1000) * 1000)
}
只执行一次doLayout,根据total的值设置定时器的时间。
回答:
原来的代码其实存在重复设置setTimeout
的问题,
按逻辑,延迟可能是3秒、4秒或者5秒建议改为
if (this.total > 3000) { let t=this.total-this.total%1000
t=t<5000?t:5000
setTimeout(() => {
this.$refs.multipleTable.doLayout()
}, t)
}
回答:
const list = []if(xx){
list.push(xx)
}
if(xxx){
list.push(xxx)
}
list.forEach(res=> setTimeout(() => {
this.$refs.multipleTable.doLayout()
}, res))
回答:
setTimeout( () => { this.$refs.multipleTable.doLayout()
}, Math.floor(this.total / 1000) * 1000)
回答:
let KEYPOINT = 3000; if (this.total > KEYPOINT) {
let total = Math.floor((this.total - KEYPOINT) / 1000);
for (let i = 0; i <= total; i++) {
setTimeout(() => {
this.$refs.multipleTable.doLayout();
}, i * 1000 + KEYPOINT);
}
}
以上是 vue/js 优化代码 的全部内容, 来源链接: utcz.com/p/936565.html