@bitty/deferred

It provides a function to create Deferred objects. They contain a Promise and methods to imperatively resolve or reject it.
Installation
This library is published in the NPM registry and can be installed using any compatible package manager.
npm install @bitty/deferred --save
yarn add @bitty/deferred
Installation from CDN
This module has a UMD bundle available through JSDelivr and Unpkg CDNs.
<script src="https://unpkg.com/@bitty/deferred"></script>
<script src="https://cdn.jsdelivr.net/npm/@bitty/deferred"></script>
<script>
console.log(createDeferred);
let deferred = createDeferred();
deferred.promise.then(() => {
console.log('It was okay.');
});
deferred.resolve();
</script>
Getting Stated
This module default exports createDeferred
, which is a factory function that creates Deferred
objects.
import createDeferred from '@bitty/deferred';
const deferred = createDeferred<boolean>();
Deferred
objects exposes a Promise
and methods to reject or resolve it.
import createDeferred, { Deferred } from '@bitty/deferred';
let deferred: Deferred<number>;
deferred.promise
.then(value => console.log(`You received $ ${value.toFixed(2)}!`))
.catch(reason => console.error(`Couldn't receive because of `, reason));
deferred.resolve(10);
deferred.reject(new Error('The account number is invalid.'));
We also export the Deferred
interface. Which simply defines the promise property (an instance of Promise
) and the methods that change it.
interface Deferred<T> {
readonly promise: Promise<T>;
reject(reason: unknown): void;
resolve(value: T | PromiseLike<T>): void;
}
License
Released under MIT License.