evl
Version:
Function fallback when error.
107 lines (72 loc) ⢠2.92 kB
Markdown
# EVL
[](https://github.com/gluons/EVL/blob/master/LICENSE)
[](https://www.npmjs.com/package/evl)
[](https://www.npmjs.com/package/evl)
[](https://travis-ci.org/gluons/EVL)
[](https://github.com/gluons/tslint-config-gluons)
š Function fallback when error.
> Likes [NVL](https://github.com/gluons/NVL) but for **Error** fallback.
## Installation
**Via [npm](https://www.npmjs.com/):**
[](https://www.npmjs.com/package/evl)
```
npm install evl
```
**Via [Yarn](https://yarnpkg.com):**
```
yarn add evl
```
## Usage
```javascript
const evl = require('evl');
const err = () => {
throw new Error('An error. š±');
};
const one = () => 1;
const two = () => 2;
const add = (a, b) => a + b;
const multiply = (a, b) => a * b;
/*
* No arguments
*/
const a = evl(one, two)(); // a is 1
const b = evl(err, two)(); // b is 2
/*
* With arguments
*/
// To call add(1, 2) or multiply(3, 4)
const c = evl(add, multiply)([1, 2], [3, 4]); // c is 3 (1 + 2 from add function)
// To call err(1, 2) or multiply(3, 4)
const d = evl(err, multiply)([1, 2], [3, 4]); // d is 12 (3 * 4 from multiply function)
```
You can also pass **non-function**.
```javascript
const evl = require('evl');
const err = () => {
throw new Error('An error. š©');
};
evl(err, 'I am fallback value.') // -> 'I am fallback value.'
```
## API
### `evl(mainFunction, fallbackFunction)`
Create an [invoke function](#invokemainfuncargs-fallbackfuncargs---invoke-function) that will return the value from either of given functions.
#### mainFunction
Type: `Function`
A **main function** that you expect it to work.
> If you pass **non-function** value to this parameter, `evl` will return it back from **invoke** function.
#### fallbackFunction
Type: `Function`
A **fallback function** that will work when **main function** throw an error.
> If you pass **non-function** value to this parameter, `evl` will return it back from **invoke** function when **main function** not work.
---
### `invoke(mainFuncArgs, fallbackFuncArgs)` - Invoke Function
Return a value of either of given functions with given arguments.
> If both `mainFunction` and `fallbackFunction` have error, `invoke` will return `null`.
#### mainFuncArgs
Type: `Array`
Default: `[]`
Arguments of `evl`'s `mainFunction`.
#### fallbackFuncArgs
Type: `Array`
Default: `[]`
Arguments of `evl`'s `fallbackFunction`.