我有一个应用程序,每次用户执行某些操作时都会自动发送推文......
如果用户愿意,可以轻松地每秒执行一次该操作。
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(使用前将#替换为@)