我目前正在寻找最佳解决方案来限制对函数的请求数量。
示例:
function CheckData() {
if (d == "newdata") {
GetData(2);
}
}
function GetData(getcheck) {
// Ajax Request here
}
我正在寻找的解决方案是这样的,当CheckData调用GetData时,有一种方法可以限制它调用GetData的频率,或者更好的是,如果有大量突然发出的请求,是否存在让它说只得到最后一个请求的方式? 所以基本上它可以检查请求的频率,以便你可以说它停止了大量请求发送最后一个请求吗?
我只想找到一种方法来限制CheckData调用GetData的频率,但这是最小化等待的最佳方法。
我已经看了几个解决方案,但我不确定如何将它应用于这种情况。
答案 0 :(得分:3)
选项1
用于限制可以调用函数的时间的常用模式是:
(您还可以在underscore.js中看到类似的实现)
选项2
虽然对于ajax,您可以创建队列系统,以便在同一个资源上一次限制一个请求。
选项3
或者,如果您的函数始终获得相同的资源,只需检查请求是否结束:
var GetData = (function() {
var running = false;
return function(getcheck) {
// exit if ajax is running
if ( running ) { return; }
running = true;
$.ajax(/* go */)
.done(function() {
/* do stuff with data */
// call it over
running = false;
});
}
}());
function CheckData() {
if (d == "newdata") {
GetData(2);
}
}