Skip to content

Commit 16776e3

Browse files
Create Rate Limiter.js
1 parent 3fad038 commit 16776e3

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

Rate Limiter.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
function* generator() {
2+
var rate = 5;
3+
var per = 8;
4+
var lastTime = Date.now();
5+
var allowance = rate; // unit: messages
6+
7+
while(true) {
8+
var currentTime = Date.now();
9+
var timeElapsed = (currentTime - lastTime)/1000;
10+
var lastTime = currentTime;
11+
var addedTime = timeElapsed*(rate/per);
12+
13+
allowance += addedTime;
14+
15+
16+
console.log('allowance',allowance, addedTime);
17+
if(allowance > rate) {
18+
allowance = rate;
19+
}
20+
21+
if (allowance < 1.0) {
22+
yield false;
23+
} else {
24+
allowance -= 1.0;
25+
yield true;
26+
}
27+
}
28+
}

0 commit comments

Comments
 (0)