timeout.js
Readme
Simple promise-based timeout
Installation
npm install --save timeout.js
Usage
const timeout = require('timeout.js');
// call then callback after 200ms
timeout(200).then(() => console.log('Okey'));
// call catch after .break() called
const exm = timeout(1000);
exm.then(() => console.log('Called!'))
.catch(() => console.log('Breaked!'));
// stop timeout and reject promise
exm.break();
// resolve data after time out
timeout(500, "Data to be resolved")
.then(data => console.log(data));
Async/Await
import timeout from 'timeout.js'
function withData() {
return timeout(300, 'data')
}
async function main() {
await timeout(200)
console.log('After 200 ms')
const data = await withData()
console.log(`After 0.5s with ${data}`)
}
main()
Timeout chaining
const timeout = require('timeout.js');
timeout(300, 'data')
.then(data => timeout(100, data))
.then(timeout.make(100)) // simple
.then(data => {
assert(data === 'data');
})
.catch(error => console.error(error));
// create timeout with predefined time
const out = timeout.make(200);
out().then(() => element.hide());
// with data
const waitFor = timeout.make(500);
waitFor({ user: 123 })
.then(user => request('/user', user))
.then(response => console.log(response.user))
.catch(error => debug(error));
// make timeout with predefined data
const waitData = timeout.make(100, 'data');
waitData()
.then(data => data === 'data');
// override
waitData('foo')
.then(data => data === 'foo');
License
Copyright © 2016 Sergey Sova <i.am@lestad.net>
This work is free. You can redistribute it and/or modify it under the
terms of the Do What The Fuck You Want To Public License, Version 2,
as published by Sam Hocevar. See the COPYING file or http://www.wtfpl.net/
for more details.