Skip to content

pietile/pietile-promise-observer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pietile Promise Observer

npm version install size

As Promise can't be canceled we can just unsubscribe from its result when don't need it.

Installation

Using yarn

yarn add pietile-promise-observer

or using npm

npm install -S pietile-promise-observer

Usage example

import { PromiseObserver, PromiseResult } from "pietile-promise-observer";

function asyncAction(): Promise<number> {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(Math.random());
    }, 1000);
  });
}

function resultHandler(result: PromiseResult<number>): void {
  if (result.error) {
    // Smth wrong happened
    console.log("Error :(", result.error.message);
    return;
  }

  console.log(result.value + 1);
}

const promiseObserver = new PromiseObserver<number>();

promiseObserver.subscribe(asyncAction(), resultHandler);

// Somehwere later ...

promiseObserver.subscribe(asyncAction(), resultHandler);
// or
promiseObserver.unsubscribe();

API

new PromiseObserver()

Create new PromiseObserver.

subscribe(promise: Promise<T>, callback: Callback<T>, unsubscribedCallback?: Callback<T>): Promise<T>

Subscribe to promise. After the promise is resolved the callback will be called with either { value: null; error: Error; } or { value: T; error: null; } argument. Optional unsubscribedCallback will be called for unsubscribed promises. Return the same promise.

unsubscribe(): void

Unsubscribe from subscribed Promise

isSubscribed(): boolean

Is observer awaiting for any promise result?

PromiseObserver.WARN_ON_ERROR

Static property. When true will warn in console on each rejection. Useful for debugging

License

Pietile Promise Observer is MIT License.