Exercise 16: Fetch with Rate Limiting
Problem Statement
Function `createRateLimitedFetch(limit, window)` banao jo fetch requests ko rate limit kare.
Example: const fetch = createRateLimitedFetch(10, 60000); → max 10 requests per minute
Sample Output:
const fetch = createRateLimitedFetch(10, 60000); await fetch(url); // Limits to 10 requests per minute
Solution
const createRateLimitedFetch = (limit, window) => {
const requests = [];
return async (url, options) => {
const now = Date.now();
requests.push(now);
const recent = requests.filter(t => now - t < window);
requests.length = 0;
requests.push(...recent);
if (requests.length > limit) {
const delay = window - (now - requests[0]);
await new Promise(resolve => setTimeout(resolve, delay));
}
return fetch(url, options);
};
};Explanation
Overall Goal:
- Fetch requests ko rate limit karna.
Real world:
- API limits: rate limiting.
- Request throttling: limit requests.