频繁的刷新或搜索时频繁请求都是不必要的且影响性能,这时就需要添加防抖函数间隔一段时间再刷新。
const refresh = this.debounce(this.$refs.homeScrollView.refresh, 50);
// 以下监听函数会频繁调用
this.$bus.$on('itemImageLoad', () => {
refresh();
})
//防抖函数
debounce(func, delay) {
let timer = null;
return function (...args) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, args);
}, delay)
}
},
将refresh函数传入到debounce函数中去,生成一个新的函数;
只有在调用非常频繁的时候,就使用新生成的函数;
而新生成的函数并不会非常频繁的执行,如果下一次执行来的非常快,那会将上一次的取消掉。