JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 17
  • Score
    100M100P100Q31263F
  • License ISC

Abstract Executor class

Package Exports

  • @js-bits/executor

Readme

Abstract Executor class

Executor is a class derived from Promise and it has similar behavior but with one major difference: asynchronous operation that ties an outcome to a promise is decoupled from the constructor.

Executor also has two useful features:

  • Built-in monitoring of execution time
  • Optional rejection by a specified timeout

The package additionally includes a simple executor implementation called Receiver.

Installation

Install with npm:

npm install @js-bits/executor

Install with yarn:

yarn add @js-bits/executor

Import where you need it:

import Executor, { Receiver } from '@js-bits/executor';

How to use

Since asynchronous operation is decoupled it won't be executed automatically when a new Executor gets created. Instead you have to call .execute() method explicitly.

const asyncOperation = new Executor((resolve, reject) => {
  // perform some asynchronous actions
  // ...
  // and resolve the promise when the operation is completed
  resolve(123);
});
// ...
asyncOperation.execute();
// ...
asyncOperation.then(result => {
  // handle the result
  console.log('result', result); // 123
});

Receiver

Receiver does not accept any executor function which means it doesn't perform any actions by itself. Receiver can be used to asynchronously assign a value to some variable or indicate some event.

(async () => {
  const someAsyncValue = new Receiver();

  setTimeout(() => {
    someAsyncValue.resolve(234);
  }, 1000);

  console.log('result', await someAsyncValue); // 234
})();

Notes

  • Internet Explorer is not supported.