如何在JQuery中防止过多的函数调用
我有一个元素,它通过AJAX调用自动保存其内容。当前,只要内容发生更改,就会调用autosave函数。但是,我想限制一下,以减少服务器请求的数量。编辑以下代码的最佳方法是什么,这样如何在JQuery中防止过多的函数调用,jquery,ajax,Jquery,Ajax,我有一个元素,它通过AJAX调用自动保存其内容。当前,只要内容发生更改,就会调用autosave函数。但是,我想限制一下,以减少服务器请求的数量。编辑以下代码的最佳方法是什么,这样save()每n秒调用一次 $("#editorInstance").contentChange(function() { save(); }); 可以使用setTimeOut()延迟函数的执行 或者,您可能希望在保存编辑器时禁用它 $("#editorInstance").contentChange(fun
save()
每n秒调用一次
$("#editorInstance").contentChange(function() {
save();
});
可以使用setTimeOut()延迟函数的执行 或者,您可能希望在保存编辑器时禁用它
$("#editorInstance").contentChange(function() {
$(this).attr('disabled', true);
save();
$(this).removeAttr('disabled');
});
可以使用setTimeOut()延迟函数的执行 或者,您可能希望在保存编辑器时禁用它
$("#editorInstance").contentChange(function() {
$(this).attr('disabled', true);
save();
$(this).removeAttr('disabled');
});
如果您不介意另一个库,下划线有一个可以处理此问题的: 油门
\油门(功能,等待)
创建并返回传递函数的新的限制版本,该版本在重复调用时,每等待毫秒最多只调用一次原始函数。用于限制发生速度快于您所能跟上的事件的速率
var throttled = _.throttle(updatePosition, 100);
$(window).scroll(throttled);
如果您不介意另一个库,下划线有一个可以处理此问题的: 油门
\油门(功能,等待)
创建并返回传递函数的新的限制版本,该版本在重复调用时,每等待毫秒最多只调用一次原始函数。用于限制发生速度快于您所能跟上的事件的速率
var throttled = _.throttle(updatePosition, 100);
$(window).scroll(throttled);
我就是这样解决的
$("#editorInstance").contentChange(function() {
if(!window.saveTimeout)
window.saveTimeout = setTimeOut(save(), 60000);
else
clearTimeout(window.saveTimeout);
window.saveTimeout = setTimeOut(save(), 60000);
});
我就是这样解决的
$("#editorInstance").contentChange(function() {
if(!window.saveTimeout)
window.saveTimeout = setTimeOut(save(), 60000);
else
clearTimeout(window.saveTimeout);
window.saveTimeout = setTimeOut(save(), 60000);
});
在添加新的
setTimeout()
之前,您可能应该添加一个cleartimout()
。在添加新的setTimeout()
之前,您可能应该添加一个cleartimout()
。