最近用vue+elementUI做项目,在做购物车时在想,当购物车里的数量变化时,是怎样向后台发送的,如果改变一次就发送一次,这样肯定不好,然后我去淘宝试了下,当我增加后大约一秒后有个请求(是不是这个我不知道,我猜是),如果我一直按着他不会发送,当我停止增加时他就又会去发送了,这个是怎样实现的,或者说向后台发送数量或者之类的请求都是怎样的流程。求解
最近用vue+elementUI做项目,在做购物车时在想,当购物车里的数量变化时,是怎样向后台发送的,如果改变一次就发送一次,这样肯定不好,然后我去淘宝试了下,当我增加后大约一秒后有个请求(是不是这个我不知道,我猜是),如果我一直按着他不会发送,当我停止增加时他就又会去发送了,这个是怎样实现的,或者说向后台发送数量或者之类的请求都是怎样的流程。求解
这个很简单
你npm install -S debounce,或者自己写一个
function debounce (fn, time) {
var t;
return function (ctx) {
clearTimeout(t)
t = setTimeout(function() {
fn.apply(ctx, [].slice.call(arguments,1));
}, time);
}
}
function sendAjax () {}
fn = debouncing(sendAjax);
fn(sendData);
但是你为什么不加一个确定按钮?
$(function(){
var time;
$(document).on('click','.inc',function(e){
clearTimeout(time);
time = setTimeout(function(){
//添加到购物车的请求
},1000);//延时一秒
});
});
手机码字,没有缩进 理解一下。^_^
道理很简单 先在外部定义一个变量用来存储计时器。每次点击加数量按钮时 先用clearTimeout把存储的计时器释放掉 ,然后再执行setTimeout,一秒后触发里面的异步事件。如果在一秒内再次点击了按钮 那么setTimeout里面的异步内容还没执行又被clear掉了
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
按照楼主的描述,“函数防抖”了解一下。