Simple promise-based timeout


Keywords
timeout, promise, es6
License
WTFPL
Install
npm install timeout.js@1.4.1

Documentation

timeout.js

GitHub stars GitHub forks npm GitHub issues Maintainer

Readme

Code Climate Test Coverage Issue Count Build Status David

Simple promise-based timeout

Installation

npm Minimum node

NPM

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

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.