Skip to content

Latest commit

 

History

History
81 lines (52 loc) · 1.97 KB

README.md

File metadata and controls

81 lines (52 loc) · 1.97 KB

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.