说说防止重复发送ajax请求的方法有哪些?各自有什么优缺点?
-
- 防抖法:在一段时间内重复请求,则取消本次请求
- 节流法:在一段时间内只能请求一次,下次请求必须在前一次请求完成后
- 等值法:未完成请求状态不再请求,而是完成后直接返回相同的内容
-
// 方法一 防抖
function debounce(f, ms) {
let time;
return function(){
let arg = Array.prototype.slice.call(arguments, 1);
if(time) {
clearTimeout(time);
}
time = setTimeout(function(){
f.apply(this, arg)
},ms)
}
}// 方法二 节流
function throttle(f, ms){
let lastTime = 0;
return function(){
let arg = Array.prototype.slice.call(arguments, 1);
let newTime = Date.now();
if(newTime-lastTime > ms) {
setTimeout(function(){
f.apply(this, arg)
},ms)
}
lastTime = newTime;
}
}