[英]JavaScript - I want to but a delay on my button so it can only be clicked once every 15 Seconds
[英]Using Javascript to rate limit and queue ajax calls to once every 15 seconds
我有一个应用程序,每次用户做某事时都会自动发推文......
如果用户愿意,用户可以每秒轻松执行一次该操作。
Twitters速率限制表示它注意到15分钟内发生了多少推文。 从技术上来说,我认为我总是低于15分钟,但似乎twitter也说“嘿,你可以在15分钟内发布15个帖子,但15秒内不会发布15个帖子”......这是合理的我觉得......
我想在javascript端解决这个问题。 我想有一个函数数组,我添加而不是实际调用ajax,然后有一个setTimeout外观,检查是否在数组的开头有一个函数调用,运行该函数,删除它从阵列中等待15秒再做一次。
随着时间的推移,这将有助于减慢推文(ajax调用)的速度。
这似乎是我应该用库解决的问题,但我看到的限制库似乎已经准备好忽略而不是存储中间请求。 jquery上的队列函数似乎是用于动画,看起来过于复杂,但可能是正确答案......
思考?
跟上这个吧
<!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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.