FuturableTask.createLimiter()
Create a limiter that restricts concurrent task execution.
Syntax
typescript
FuturableTask.createLimiter(
concurrency: number,
events?: LimiterEvents
): FuturableTaskLimiterParameters
concurrency
Maximum number of concurrent tasks.
events (optional)
Event hooks for monitoring:
onActive(task)- Task startsonCompleted(result)- Task completesonError(error)- Task failsonIdle()- All tasks finished
Return Value
A limiter function with properties:
activeCount- Currently running taskspendingCount- Tasks waiting to runconcurrency- Max concurrent tasks
Examples
typescript
const limiter = FuturableTask.createLimiter(3);
const tasks = urls.map(url =>
limiter(FuturableTask.fetch(url))
);
await FuturableTask.parallel(tasks).run();
// Only 3 requests run at onceWith Events
typescript
const limiter = FuturableTask.createLimiter(5, {
onActive: () => console.log(`Active: ${limiter.activeCount}/5`),
onCompleted: (result) => console.log('Done:', result),
onIdle: () => console.log('All finished')
});API Rate Limiting
typescript
const apiLimiter = FuturableTask.createLimiter(10);
const fetchUsers = (ids: number[]) => {
const tasks = ids.map(id =>
apiLimiter(
FuturableTask.fetch(`/api/users/${id}`)
.map(res => res.json())
)
);
return FuturableTask.parallel(tasks);
};