是否有办法通过$.ajaxSetup
限制请求,以便在Y秒内X请求之后的任何事情都不会发生,直到时间过去因此限制可以自行重置?我知道我可以使用jquery throttle,
但我正在寻找实现所有$.ajax
,$.get
和$.post
的全球方式。
例如,我可能会设置我将在5秒内仅允许20个请求。在21号请求中,我将有一个错误处理程序来显示消息。计数器每5秒重新开始一次,这样他们就可以再次提出请求。
答案 0 :(得分:2)
这是一种评估所有ajaxRequests的方法。您可以在MS中定义速率限制间隔以及在给定时间段内允许的请求数量。
Ticks
答案 1 :(得分:0)
限制一个函数isSafe(),如果它好转则返回true,否则返回false。
在ajaxSetup中,让beforeSend()返回isSafe()的结果。如果为false,则不会发送请求。
我没有测试过它,但它会是这样的:
const isSafe = $.throttle(numberOfMillis, () => true);
$.ajaxSetup({
beforeSend: isSafe
});
答案 2 :(得分:0)
你不能把ajax调用放到函数中并跟踪调用该函数的频率吗?
var globalCount = 0;
var ajaxOperations = {
init: function(){
//init
},
loadNewsletterTemplate: function(templateDataFile){
globalCount++;
$.ajax({
url: "data/" + templateDataFile,
type: "GET",
success: function(response){
globalCount--;
formProcessing.convertToHTML_newsLetter_weeklyUpdates(response);
//console.log("response" + response);
}
});
}
}
每次调用ajaxOperations时,您都可以迭代一个全局数字,每次成功执行时都可以进行撤回,从而保持稳定的流量。 if(globalCount< 5){call new ajax event}