1.0.13 • Published 2 years ago

@js-bits/timeout v1.0.13

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

Promise-based timeout

A convenient, promise-based way to work with timeouts. It's useful to track asynchronous operations (HTTP requests for instance) latency.

Installation

Install with npm:

npm install @js-bits/timeout

Install with yarn:

yarn add @js-bits/timeout

Import where you need it:

import Timeout from '@js-bits/timeout';

or require for CommonJS:

const Timeout = require('@js-bits/timeout');

How to use

Basic approach:

const timeout = new Timeout(1000); // 1 sec

timeout.set().catch(() => {
  console.log('Timeout exceeded');
});

Alternative approach:

const timeout = new Timeout(2000); // 2 sec

timeout.catch(() => {
  console.log('Timeout exceeded');
});

// ...

timeout.set();

Error handling:

const timeout = new Timeout(3000); // 3 sec

timeout.set().catch(reason => {
  if (reason.name === Timeout.TimeoutExceededError) {
    console.log('Timeout exceeded error');
  }
});

Actual usage:

const timeout = new Timeout(1000); // 1 sec

timeout.catch(() => {
  // you can report the exceeded timeout here
  console.log('Asynchronous operation timeout exceeded');
});

// fake async operation
const asyncAction = async delay =>
  new Promise(resolve => {
    setTimeout(resolve, delay);
  });

(async () => {
  // at the beginning of the operation
  timeout.set();

  // perform some asynchronous actions which could potentially
  // take more time than the specified timeout
  const asyncActionPromise = asyncAction(2000); // 2 sec

  timeout.catch(() => {
    // you can also report the exceeded timeout or abort the operation here
  });

  await asyncActionPromise;

  // when the operation is completed
  timeout.clear();
})();

Notes

  • You cannot "pause" a timeout or "reset" it. Once it's set, there are only two possibilities: either the timeout can be manually cleared before it is exceeded or the timeout will be exceeded.
  • It's possible to clear a timeout before it is even set up but you won't be able to set that timeout up ever again.
1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.4

4 years ago

0.1.0

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.3

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago