1.0.13 • Published 11 months ago

@js-bits/timeout v1.0.13

Weekly downloads
-
License
ISC
Repository
github
Last release
11 months 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

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago

1.0.9

12 months ago

1.0.8

12 months ago

1.0.7

12 months ago

1.0.6

12 months ago

1.0.5

12 months ago

1.0.4

12 months ago

1.0.3

12 months ago

1.0.11

12 months ago

1.0.10

12 months ago

1.0.13

11 months ago

1.0.12

12 months ago

0.2.1

3 years ago

0.2.0

3 years ago

0.1.4

3 years ago

0.1.0

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.3

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago