Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
🚀 Rate Limiting: From Basic to Production Grade Implementations
May 22, 2025
341 views
A deep dive into different ways to implement rate-limiting in JavaScript, comparing tradeoffs and use cases. Let's explore 5 approaches! 🧵👇
1️⃣ Basic Rate-Limiting (Immediate Rejection)
function rateLimit(fn, delay) { let lastCall = 0; return (...args) => { const now = Date.now(); if (now - lastCall < delay) { throw new Error(`Rate limited (wait ${delay}ms)`); } lastCall = now; return fn(...args); }; }2️⃣ Promise-Based (Reject Fast)
function rateLimit(fn, delay) { let lastCall = 0; return (...args) => { const now = Date.now(); if (now - lastCall < delay) { return Promise.reject(new Error('Too many requests')); } lastCall = now; return Promise.resolve(fn(...args)); }; }function rateLimit(equipment, time){ let lastExec = 0 return (a, b) =>{ if(Date.now() - lastExec < time){ return "rate limited" } lastExec = Date.now() return equipment(a, b) } }function mineQueue(equipment, time){ let lastExec = 0 return (a, b) => { const now = Date.now() const delay = Math.max(0, lastExec + time - now) lastExec = now + delay return new Promise(resolve => { setTimeout(() => resolve(equipment(a, b)), delay) }) } }