callback-timeout
Executes callback with single error argument if timeout is exceeded before it's called naturally
example
var timeout = require('callback-timeout')
function doSomethingFast(cb) { setTimeout(cb, 100) }
function doSomethingSlow(cb) { setTimeout(cb, 2000) }
doSomethingFast(timeout(function doSomethingFastHandler (err) {
if (err)
console.log(err.code, err.message)
else
console.log('doSomethingFastHandler executed without error.')
}, 1000))
doSomethingSlow(timeout(function doSomethingSlowHandler (err) {
if (err)
console.log(err.code, err.message)
else
console.log('doSomethingSlowHandler executed without error.')
}, 1000))
usage
var timeout = require('callback-timeout'),
TimeoutError = require('callback-timeout/errors').TimeoutError
timeout(callback [, ms, msg])
Returns a callback function that will execute after ms
milliseconds with a single TimeoutError
argument if not invoked by other means first. If the ms
timeout argument is omitted, 0, or null, then the timeout is disabled and the original callback is returned. msg
may be used to set a custom error message (on timeout), otherwise an appropriate one will be set for you.
TimeoutError
The constructor of the error supplied to the callback
when a timeout occurs.
TimeoutError objects will have a code
property with the value ETIMEOUT
.
install
With npm do:
npm install callback-timeout
testing
npm test [--dot | --spec] [--phantom] [--grep=pattern]
Specifying --dot
or --spec
will change the output from the default TAP style.
Specifying --phantom
will cause the tests to run in the headless phantom browser instead of node.
Specifying --grep
will only run the test files that match the given pattern.
browser test
npm run browser-test
This will run the tests in all browsers (specified in .zuul.yml). Be sure to educate zuul first.
coverage
npm run coverage [--html]
This will output a textual coverage report. Including --html
will also open
an HTML coverage report in the default browser.