UNPKG

1.66 kBMarkdownView Raw
1# Deferred
2A Promise that can be resolved externally
3
4[![npm](https://img.shields.io/npm/v/@woubuc/deferred)](https://www.npmjs.com/package/@woubuc/deferred)
5[![MIT licensed](https://img.shields.io/badge/license-MIT-green)](https://github.com/woubuc/deferred/blob/master/LICENSE.txt)
6[![install size](https://packagephobia.com/badge?p=@woubuc/deferred)](https://packagephobia.com/result?p=@woubuc/deferred)
7![Typescript type definitions included](https://img.shields.io/npm/types/@woubuc/deferred)
8
9## Installation
10```
11yarn add @woubuc/deferred
12```
13
14The library is written in Typescript to types are included.
15
16## Usage
17```typescript
18import Deferred from '@woubuc/deferred';
19
20// Use it as a regular promise
21let promise = new Deferred((resolve, reject) => {
22 resolve('done');
23});
24
25// Or resolve it externally
26promise.resolve('done');
27
28// Or omit the promise body altogether
29let deferred = new Deferred();
30deferred.resolve('done');
31```
32
33#### API
34```typescript
35let deferred = new Deferred<T>(promiseCallback);
36```
37Creates a new Deferred promise. Takes a `(resolve, reject)` callback just like a regular promise.
38
39- `<T>`: Type of the promise resolve value
40
41```typescript
42deferred.resolve(value : T);
43```
44Resolves the promise with `value`
45
46```typescript
47deferred.reject(error ?: any);
48```
49Rejects the promise with an optional `error`.
50
51#### Notes
52- Extends the native `Promise` object, so it should be fully compatible with regular promises
53- Resolving and rejecting follows the same rules as with regular promises (i.e. a promise can only be settled once)
54- Resolving the promise externally will not stop or code inside the constructor callback from executing