使用 Javascript 进行速率限制并将 ajax 调用排队为每 15 秒一次

2024-04-12

我有一个应用程序,每次用户执行某些操作时都会自动发送推文......

如果用户愿意,可以轻松地每秒执行一次该操作。

Twitter 的速率限制表示,它关注 15 分钟内发生了多少条推文。从技术上讲,我认为我总是低于 15 分钟标记,但 Twitter 似乎也说“嘿,你可以在 15 分钟内发布 15 个帖子,但不能在 15 秒内发布 15 个帖子”……我认为这是合理的……

我想在javascript方面解决这个问题。我想要一个函数数组,将其添加到而不是实际调用 ajax,然后进行 setTimeout 查找,检查数组开头是否有函数调用,运行该函数,将其删除从数组中删除并等待 15 秒再次执行。

这将有助于随着时间的推移将推文(ajax 调用)减慢到合理的程度。

这似乎是我应该用库来解决的问题,但我见过的节流库似乎已经做好了准备忽略而不是存储 http://benalman.com/projects/jquery-throttle-debounce-plugin/中间请求。这jquery中的队列函数 http://api.jquery.com/jQuery.queue/似乎是用于动画并且看起来过于复杂,但可能是正确的答案......

想法?


尝试一下这个

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Queue things</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
var myQueue=[],msgNum=0;
function queueIt(item) {
  myQueue.push({ "item":item, "ts":new Date().getTime()});
}
function processQueue() {
  if (myQueue.length===0) return;
  var obj = myQueue.shift();
  $("#content").append('<br/>'+obj.item+" "+diff(obj.ts));
}
function diff(ts) {
    var t = new Date().getTime()-ts;
    return t + "ms ago";
}
$(function(){
    $("#clickMe").on("click",function() {
        msgNum++;
        queueIt("Message #"+msgNum);
    });
    setInterval(processQueue,15000);
});

</script>
</head>
<body>
<input type="button" id="clickMe" value="Queue something"/>
<div id="content"></div>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Javascript 进行速率限制并将 ajax 调用排队为每 15 秒一次 的相关文章

  • 可以在初始 DOM 解析期间/之前修改 DOM 吗?

    是否可以在初始 DOM 解析期间或之前修改 DOM 或者我是否必须等到 DOM 被解析和构建之后才能与其交互 更具体地说 是否有可能阻止 DOM 中的脚本元素使用用户脚本 内容脚本或 Chrome 或 Firefox 中的类似脚本运行 在解
  • Snap.svg - 停止在可悬停元素的子元素上重新触发悬停事件

    对于一个项目 我使用的 SVG 形状由背景多边形和背景多边形上方的一些文本 我已将其转换为路径 组成 我正在使用 Snap svg 为我的形状设置动画 当我将鼠标悬停在多边形上时 形状应该缩放到特定尺寸 包括其中的所有内容 鼠标移开时 形状
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • 使用 Jquery 清除 5 个空 TD

    我有一个正在填充的动态表 我知道我不应该这样做 但是你会如何连续找到 5 个空 TD 并隐藏它们呢 因此 如果行包含 5 个空 TD 则不显示 TD 我想删除每个实例 td td td td td td td td td td 在 DOM
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 用于交互式图形绘制的轻量级 JavaScript 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有兴趣了解用于绘制交互式图表的最轻量级 javascript 库 我掌握的数据主要是与海洋研究相关的科学数据 我知道一些 jquery
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • 在 CKEditor 中设置字体大小和字体系列

    我正在使用 ckeditor 我想问一下这个插件如何设置font family和font size 我尝试过使用 CKEDITOR config font defaultLabel Arial CKEDITOR config fontSiz
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • 当鼠标悬停在放置目标上时如何更改拖放光标

    我有一个应用程序 其中包含一个取消归档 文件属性 文件的放置目标 我想将表单的 DragEnter 事件中的鼠标光标更改为我作为嵌入资源的自定义光标 cur 放置目标是带有目标图像的透明形式 整个表格是放置目标 我知道当我控制拖动源时可以使
  • 通过 AJAX 将动态字段添加到嵌套表单

    我一直在我的应用程序上观看和重现这些轨道广播 196 嵌套模型表单第 1 部分 http railscasts com episodes 196 nested model form part 1 and 197 嵌套模型形式 第 2 部分
  • 如何在 R 中堆叠数据框[重复]

    这个问题在这里已经有答案了 我有一个数据框 我想将其堆叠在 R 中 这样我最终会得到三列 下面是当前格式的一些示例数据 gt dput df structure list Day c d1 d2 d3 d4 d5 d6 d7 d8 d9 d
  • 使用 Java 代理将类添加到类路径

    我正在使用 Java Agent 和 Javassist 向某些 JDK 类添加一些日志记录 本质上 当系统加载一些 TLS 类时 Javassist 会向它们添加一些额外的字节码 以帮助我调试一些连接问题 考虑到此类包含在代理 jar 中
  • “poly()”如何生成正交多项式?如何理解返回的“coefs”?

    我对正交多项式的理解是它们采用以下形式 y x a1 a2 x c1 a3 x c2 x c3 a4 x c4 x c5 x c6 最多达到所需的术语数 where a1 a2 etc是每个正交项的系数 拟合之间有所不同 并且c1 c2 e
  • vim - 从 vim 撤消文件恢复丢失的文件

    我不小心删除了 vimrc 这花了我几周的时间来配置 我仍然保留撤消文件 我认为这是恢复它的唯一方法 不幸的是 vim 现在不允许我撤消 我猜是因为我当前的 vimrc 版本无法使用最后一个撤消步骤 修补 另外 vim 撤消文件是经过编码的
  • 如何在最后一个单元格上启动 UITableView?

    在Apple的消息应用程序中 当您单击通讯员的姓名并切换到对话的表格视图 每条消息都有气球 时 表格会一直滚动到最后 没有动画或任何东西 它就在那里 同样 在 Tweetie 2 中 当您加载推文视图时 它会出现在您上次查看的位置 没有动画
  • 检查列表是否包含类型?

    检查列表中是否存在某种类型的最快方法是什么 我希望我能做到以下几点 class Generic object def class SubclassOne Generic def class SubclassOne Generic def t
  • 如何处理 MVC 中的页面流(特别是 asp.net)

    如果您必须在 mvc 中提供类似于表单输入体验的向导 您将如何抽象页面流 研究重定向后获取模式 http weblogs asp net mhawley archive tags MVC default aspx http weblogs
  • sql 按日期分组,不带时间

    我是 sql 新手 我想创建一个查询来计算我每天的所有文章 ID 但问题是日期列也包含时间 那么我如何才能使查询仅按日期分组而无需时间 例如 id article id date timestamp 1 22 2014 01 10 13 3
  • GIT 不跟踪文件

    我已经在 AIX 6 1 上设置了 GIT 但遇到了问题 我遵循的步骤顺序如下所示 我创建一个文件夹 进入文件夹并初始化非裸存储库 初始化用户名和用户电子邮件 创建一个名为index html 的文件 并在该文件中包含一些数据 创建一个名为
  • 对小数的最快素数测试

    我在业余时间玩了 Euler 项目 现在我需要做一些重构 我已经实施了 Miller Rabin 以及一些筛子 我以前听说过 对于较小的数量 例如数百万以下 筛子实际上更快 有人有这方面的信息吗 谷歌并没有多大帮助 Yes you ll f
  • Tensorflow动态RNN(LSTM):如何格式化输入?

    我已获得这种格式的一些数据以及以下详细信息 person1 day1 feature1 feature2 featureN label person1 day2 feature1 feature2 featureN label person
  • 设置非 Office 文件的 Windows 文件属性

    我想在 NET 代码中设置文件的属性 我尝试过使用 DSOFile v2 1 如下所示 var properties new OleDocumentProperties try properties Open filePath proper
  • java中如何从字符串中提取子字符串

    亲爱的大家 我有一个像这样的字符串 1name john 2name lice 3name mike 我想输出它的子字符串 1name john 它在字符串中的位置不固定 我也使用子字符串方法但无法获取它 那么你能帮我一个忙吗 谢谢 Str
  • C# - 静态类型不能用作类型参数

    我有一个通用类可以帮助我检查参数值 internal sealed class Argument
  • Eclipse - 当涉及 Maven 时“作为 Java 应用程序运行”

    我有一个 Maven 项目 作为activeByDefault我有生产资料 看来我找不到使用临时配置文件在 Eclipse 中将其作为应用程序运行的方法 除非我将activeByDefault在暂存配置文件中 有没有办法配置这个 这样我就不
  • IE 脚本和通知设置之间的差异

    这些 IE 设置之间有什么区别 Disable script debugging Internet Explorer Disable script debugging Other Display a notification about e
  • 如何对这个(正确)抛出异常的异步方法进行单元测试?

    我在界面中有以下方法 Task
  • 使用 Javascript 进行速率限制并将 ajax 调用排队为每 15 秒一次

    我有一个应用程序 每次用户执行某些操作时都会自动发送推文 如果用户愿意 可以轻松地每秒执行一次该操作 Twitter 的速率限制表示 它关注 15 分钟内发生了多少条推文 从技术上讲 我认为我总是低于 15 分钟标记 但 Twitter 似