javascript - 在 jquery 中全局限制 $.ajax 请求

标签 javascript jquery ajax

有没有一种方法可以通过 $.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/

相关文章:

javascript - 制作 ng-donut 可点击的 AngularJs

javascript - 从链接或段落或标题或 alt 标签中提取特定文本并在同一页面但不同位置再次显示

javascript - jQuery:循环连续的div轮播

javascript - 如何在正确的上下文中引用 Knockout.js 对象和对象数组

c# - 在日期中设置特定的一天

javascript - 使用 Django 1.10 + AJAX 的安全性,无需任何 HTML 表单

jQuery CSS 样式在某些情况下不更新

javascript - 更新 Angular Directive(指令)中的数据

jQuery ajax 登录表单与 asp.net mvc

javascript - 如何在没有 JSONP 的情况下通过 AJAX 调用访问来自不同服务器的数据?