0.2.0 • Published 7 months ago

@steeringwaves/pinkypromise v0.2.0

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

@steeringwaves/pinkypromise

workflow

A typescript promise library built for the real world.

Installation

npm install @steeringwaves/context
npm install @steeringwaves/pinkypromise

# for typescript you also need typings for bluebird
npm install --save-dev @types/bluebird

Example

basic usage

import Context from "@steeringwaves/context";
import PinkyPromise, { Cancelable } from "@steeringwaves/pinkypromise";

const fn = () =>
	new PinkyPromise(new Promise(resolve, reject) => {
		resolve();
	});

fn().then();

retry conditions

let count = 0;
const fn = () =>
	new PinkyPromise(
		new Promise(resolve, reject) => {
			count++;
			resolve();
		},
		{
			While: () => count < 10
		}
	);

fn()
	.then(() => {
		console.log(count); // 10
	})
	.catch((err) => {
		console.log(err);
	});

retry conditions where condition is async

let count = 0;
const fn = () =>
	new PinkyPromise(
		new Promise(resolve, reject) => {
			if (count < 10) {
				resolve();
			} else {
				reject();
			}
		},
		{
			While: () =>
				new Promise((resolve) => {
					count++;
					resolve();
				})
		}
	);

fn()
	.then(() => {
		console.log(count); // 10
	})
	.catch((err) => {
		console.log(err);
	});

retry attempts

let count = 0;
const fn = () =>
	new PinkyPromise(
		new Promise(resolve, reject) => {
			count++;
			if (count < 10) {
				reject();
			} else {
				resolve();
			}
		},
		{
			Interval: 100, // 100ms
			Retries: 10
		}
	);

// could also do fn().setInterval(100).setRetries(10)

fn()
	.then(() => {
		console.log(count); // 10
	})
	.catch((err) => {
		console.log(err);
	});

using context

const fn = () =>
	new PinkyPromise(
		new Promise(resolve, reject) => {
			callback();
			resolve();
		},
		{ Context: ctx }
	);

fn().then();

// or
const fn = () =>
	new PinkyPromise(new Promise(resolve, reject) => {
		callback();
		resolve();
	});

fn().setContext(ctx).then();

typescript usage

import Context from "@steeringwaves/context";
import PinkyPromise, { Cancelable } from "@steeringwaves/pinkypromise";

const ctx = new Context();

const fn: Cancelable<void> = () =>
	new PinkyPromise(
		new Promise(resolve: any, reject: any) => {
			callback();
			resolve();
		},
		{ Context: ctx }
	);

fn().then();
0.2.0

7 months ago

0.1.1

11 months ago

0.1.0

1 year ago

0.0.4

1 year ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago