$ gnpm install call-limit
Limit the number of simultaneous executions of a async function.
const fs = require('fs')
const limit = require('call-limit')
const limitedStat = limit(fs.stat, 5)
Or with promise returning functions:
const fs = Bluebird.promisifyAll(require('fs'))
const limit = require('call-limit')
const limitedStat = limit.promise(fs.statAsync, 5)
Given that:
const limit = require('call-limit')
The returned function will execute up to maxRunning calls of func
at once.
Beyond that they get queued and called when the previous call completes.
func
must accept a callback as the final argument and must call it when
it completes, or call-limit
won't know to dequeue the next thing to run.
By contrast, callers to limitedFunc
do NOT have to pass in a callback, but
if they do they'll be called when func
calls its callback.
The returned function will execute up to maxRunning calls of func
at once.
Beyond that they get queued and called when the previous call completes.
func
must return a promise.
limitedFunc
will return a promise that resolves with the promise returned
from the call to func
.
This is sugar for:
class.prototype.methodName = limit(class.prototype.methodName, maxRunning)
This is sugar for:
object.methodName = limit(object.methodName, maxRunning)
For example limit.promise.method(fs, 'stat', 5)
is the same as
fs.stat = limit.promise(fs.stat, 5)
.
This is sugar for:
class.prototype.methodName = limit.promise(class.prototype.methodName, maxRunning)
This is sugar for:
object.methodName = limit.promise(object.methodName, maxRunning)
For example limit.promise.method(fs, 'statAsync', 5)
is the same as
fs.statAsync = limit.promise(fs.statAsync, 5)
.
Copyright 2013 - present © cnpmjs.org | Home |