我试图在我的发送消息系统中添加1秒的冷却时间(例如,你最多可以每秒发送1条消息)。所以我最初的想法只是创建一个超时,然后尝试发送以检查它是否仍然存在。事实证明,这比最初的预期更多。
我有什么东西在这里失踪吗?不是有一些简单的东西:
//inside some message sending function
if(!mySuperCooldown)
{
//send message
mySuperCooldown = cooldown(1000);
}
我成功构建的其他所有内容最终会占用大量的线条,而且在我看来,这是我之前想到过的东西。谢谢你,原谅我的文盲。
答案 0 :(得分:2)
有一个允许消息的标志,并在发送消息时将其设置为false。然后设置超时1000毫秒,将标志重置为true。
http://www.example.com
答案 1 :(得分:2)
创建一个更高阶函数,将正常函数转换为速率限制函数:
function rate_limit(delay, func) {
var last_call = null;
return function() {
if (last_call && (Date.now() - last_call <= delay)) {
return;
}
last_call = Date.now();
return func();
};
}
然后您可以对任何功能进行速率限制:
var my_function = rate_limit(1000, function() {
console.log('foo');
});
运行my_function()
只会每秒调用一次原始函数。