Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jumpn/utils-promise

Promise Utilities
https://github.com/jumpn/utils-promise

deferred functional-programming promise promise-utilities utilities utils

Last synced: about 1 month ago
JSON representation

Promise Utilities

Awesome Lists containing this project

README

        

# @jumpn/utils-promise

> Promise utilities
>
> **NOTE**: All the functions described in [API](#API) are curried

- [Installation](#installation)
- [Using npm](#using-npm)
- [Using yarn](#using-yarn)
- [Types](#types)
- [API](#api)
- [allByName](#allbyname)
- [booleanize](#booleanize)
- [chain](#chain)
- [createDeferred](#createdeferred)
- [promisifyFunction](#promisifyfunction)
- [promisifyObject](#promisifyobject)
- [track](#track)
- [promiseTry](#promisetry)
- [License](#license)

## Installation

### Using [npm](https://docs.npmjs.com/cli/npm)

$ npm install --save @jumpn/utils-promise

### Using [yarn](https://yarnpkg.com)

$ yarn add @jumpn/utils-promise

## Types

```flowtype
type Deferred = {
promise: Promise,
resolve: (result: Result) => void,
reject: (error: any) => void
};

type PromiseInfo = {
result: Result,
status: void | "rejected" | "resolved"
};
```

## API

### allByName

Returns a promise that will be resolved with an object the results of all the
given promises or it will reject with an Error that will have an additional
property "from" with the name of the promise that caused the rejection.

**Parameters**

- `promisesByName` **PromisesByName**

Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<ResultsByName>**

### booleanize

Returns a new promise which follows the one given returning true in case
there was no error, or false otherwise

**Parameters**

- `promise` **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<any>**

Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)>**

### chain

Chains all promises starting from initialPromise and binding chainers to
next methods

**Parameters**

- `chainers` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)>**
- `initialPromise` **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<any>**

Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<any>**

### createDeferred

Creates a Deferred

Returns **Deferred<any>**

### promisifyFunction

Returns a new function that:

- if last argument is a callback =>
it will mimic the function given.
- if last argument is not a callback =>
it will return a promise which will be resolved or rejected following the
execution of the function given.

**Parameters**

- `fn` **function (): Result**

### promisifyObject

Returns a new object with the result of having promisified all the methods of
the one given.

**Parameters**

- `object` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)**

Returns **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)**

### track

Returns an object with status and value properties that are updated as soon
as the promise is resolved or rejected

**Parameters**

- `promise` **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<Result>**

Returns **PromiseInfo<$Supertype<Result>>**

### promiseTry

Returns a promise that will be resolved with the result of execute,
or rejected with the error thrown by it (if any).

**Parameters**

- `execute` **function (): Result**

Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<Result>**

## License

[MIT](LICENSE.txt) :copyright: **Jumpn Limited** / Mauro Titimoli ([email protected])