@extra-js/deferred
TypeScript icon, indicating that this package has built-in type declarations

0.1.1 • Public • Published

Deferrable Promises (Deferred)

A simple promise-like object which exposes resolve and reject methods.

Resolve

import assert from 'assert';
import { Deferred } from '@extra-js/deferred';

process.on('unhandledRejection', (error) => {
  throw error;
});

async function main() {
  const future: Deferred<string> = new Deferred<string>();
  setTimeout(future.resolve.bind(future, 'foo'));
  const val = await future;
  assert(val === 'foo', 'operation should be resolved');
}

main.call(this);

Reject

import assert from 'assert';
import { Deferred } from '@extra-js/deferred';

process.on('unhandledRejection', (error) => {
  throw error;
});

async function main() {
  const future: Deferred<string> = new Deferred<string>();
  setTimeout(future.reject.bind(future, new Error('foo')));
  try {
    await future;
  } catch (error) {
    assert(error.message === 'foo');
  }
}

main.call(this);

Timeout

import assert from 'assert';
import { Deferred } from '@extra-js/deferred';

process.on('unhandledRejection', (error) => {
  throw error;
});

async function main() {
  const TIMEOUT = 1000; // 1s
  const future: Deferred<string> = new Deferred<string>(TIMEOUT);
  try {
    await future;
  } catch (error) {
    assert(error.message === 'Timeout');
  }
}

main.call(this);

Package Sidebar

Install

npm i @extra-js/deferred

Weekly Downloads

0

Version

0.1.1

License

MIT

Unpacked Size

7.96 kB

Total Files

10

Last publish

Collaborators

  • crabicode