1.0.4 • Published 9 years ago
tmfy v1.0.4
tmfy
Timeouts for promises and promisified functions
Pronunciation: timeify, Thai-Me-Fy
Quick Start
npm install tmfyvar tmfy = require('tmfy');
var lib = {
sendEmail: function(send_to) {
// need 200ms to send
return new Promise(function (r) { setTimeout(r, 200) });
},
sendEmailSlowly: function(send_to) {
// need 20000ms to send
return new Promise(function (r) { setTimeout(r, 20000) });
}
};
tmfy.timeifyAll(lib);
lib.sendEmailTimeout(1000, 'me@apple.com') // timeout after 1000ms
.then(function(result) {
console.log('email sent');
})
.catch(function(error) {
// never called
});
lib.sendEmailSlowlyTimeout(1000, 'me@apple.com') // timeout after 1000ms
.then(function(result) {
// never called
})
.catch(function(error) {
console.log('timeout first');
});API
timeout(mil, promise)
timeout(mil, handler, promise)
Returns a Promise.
- Resolves if
promiseis resolved beforemilms timeout.promiseresult is passed. - Rejects if
promiseis rejected beforemilms timeout.promiseerror is passed. - Rejects with
new Error('TIMEOUT')ifmilms timeout beforepromiseis resolved or rejected.
If handler is set and have emit(), error event will be emitted on timeout with new Error('TIMEOUT').
timeify(func)
func must returns a Promise.
Returns a wrapped function around func which accepts mil as a first argument:
var funcTimeout = tmfy.timeify(func);
funcTimeout(1000, ...); // runs func(...) with 1000ms timeoutA wrapped function returns a Promise. Same logic as for timeout() applies.
If this is set and have emit(), error event will be emitted on timeout with new Error('TIMEOUT').
timeifyAll(obj)
Extends obj with timeified versions of all functions. Adds 'Timeout' suffix to wrapped functions.
var obj = {
func: function() { return Promise.resolve('success'); }
};
tmfy.timeifyAll(obj);
obj.funcTimeout(1000)
.then(function(result) {
// prints "success"
result => console.log(result)
})License
Copyright (c) 2016 AfterShip
Licensed under the MIT license.