468ab4519e
PR-URL: https://github.com/nodejs/node/pull/20190 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> |
||
---|---|---|
.. | ||
call-limit.js | ||
package.json | ||
README.md |
call-limit
Limit the number of simultaneous executions of a async function.
var fs = require('fs')
var limit = require('call-limit')
var limitedStat = limit(fs.stat, 5)
Or with promise returning functions:
var fs = Bluebird.promisifyAll(require('fs'))
var limit = require('call-limit')
var limitedStat = limit.promise(fs.statAsync, 5)
USAGE:
Given that:
var limit = require('call-limit')
limit(func, maxRunning) → limitedFunc
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.
limit.promise(func, maxRunning) → limitedFunc
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
.
limit.method(class, methodName, maxRunning)
This is sugar for:
class.prototype.methodName = limit(class.prototype.methodName, maxRunning)
limit.method(object, 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)
.
limit.promise.method(class, methodName, maxRunning)
This is sugar for:
class.prototype.methodName = limit.promise(class.prototype.methodName, maxRunning)
limit.promise.method(object, 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)
.