有没有一种方法可以通过 $.ajaxSetup
来限制请求,这样在 Y 秒内 X 次请求之后的任何事情都不会发生,直到时间过去,这样限制可以自行重置?我知道我可以使用 jquery throttle ,
但我正在寻找一种全局方式来影响所有 $.ajax
、$.get
和 $.post
。
例如,我可能会设置在 5 秒内只允许 20 个请求。在第 21 个请求上,我将有一个错误处理程序来显示一条消息。每 5 秒计数器将重新开始,以便他们可以再次发出请求。
最佳答案
这是一种对限制所有 ajax 请求进行评级的方法。您可以在 MS 中定义一个速率限制间隔以及在给定时间段内允许多少请求。
var RATE_LIMIT_IN_MS = 100;
var NUMBER_OF_REQUESTS_ALLOWED = 2;
var NUMBER_OF_REQUESTS = 0;
setInterval(function()
{
NUMBER_OF_REQUESTS = 0;
}, RATE_LIMIT_IN_MS);
$.ajaxSetup ({
beforeSend: function canSendAjaxRequest()
{
var can_send = NUMBER_OF_REQUESTS < NUMBER_OF_REQUESTS_ALLOWED;
NUMBER_OF_REQUESTS++;
return can_send;
}
});
关于javascript - 在 jquery 中全局限制 $.ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44597253/