setTimeout延时请求操作,适用于input内容变化时搜索。如果输入速度过快,可能会出现搜索内容没有完全收集完毕就发起了接口请求,导致搜索结果不准确。
解决方案(一):
通过setTimeout延时发起请求。每次请求前,先判断是否存在setTimeout,存在则清除,反之则发起请求,以此来保证每次发起请求的数据收集。
let timer=null;
// 搜索框内容变化时调用
inputChange:function(){
if(timer){
clear(timer);
timer=null;
}
timer = setTimeout(()=>{
// 接口请求的操作内容
// 。。。。
},200)
}
解决方案(二):
function shake(fn, wait) {
let timer = null;
return function () {
if (timer) {
clearTimeout(timer)
timer = null
}
timer = setTimeout(() => {
fn.apply(this, arguments)
}, wait);
}
}
function option(event) {
console.log(event)
}
window.onmousemove = shake(option, 200)