我目前正在寻找限制函数请求数量的最佳解决方案。
例子:
function CheckData() {
if (d == "newdata") {
GetData(2);
}
}
function GetData(getcheck) {
// Ajax Request here
}
我正在寻找的解决方案是,当 CheckData 调用 GetData 时,是否有一种方法可以限制它调用 GetData 的频率,或者更好的是,如果有大量请求突然通过,是否有让它说只得到最后一个请求的方法? 所以它基本上可以检查请求的频率,这样你就可以说它停止了大量请求,现在发送最后一个请求了吗?
我只是在寻找一种方法来限制 CheckData 调用 GetData 的频率,但这是尽可能减少等待的最佳方法。
我看过一些解决方案,但不确定如何将其应用于这种情况。
最佳答案
选项 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);
}
}
关于javascript - 如何限制对函数的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13187908/