89 lines
2.3 KiB
Markdown
89 lines
2.3 KiB
Markdown
# Try to Catch [![NPM version][NPMIMGURL]][NPMURL] [![Dependency Status][DependencyStatusIMGURL]][DependencyStatusURL] [![Build Status][BuildStatusIMGURL]][BuildStatusURL] [![Coverage Status][CoverageIMGURL]][CoverageURL]
|
|
|
|
[NPMIMGURL]: https://img.shields.io/npm/v/try-to-catch.svg?style=flat&longCache=true
|
|
[BuildStatusIMGURL]: https://img.shields.io/travis/coderaiser/try-to-catch/master.svg?style=flat&longCache=true
|
|
[DependencyStatusIMGURL]: https://img.shields.io/david/coderaiser/try-to-catch.svg?style=flat&longCache=true
|
|
[NPMURL]: https://npmjs.org/package/try-to-catch "npm"
|
|
[BuildStatusURL]: https://travis-ci.org/coderaiser/try-to-catch "Build Status"
|
|
[DependencyStatusURL]: https://david-dm.org/coderaiser/try-to-catch "Dependency Status"
|
|
|
|
[CoverageURL]: https://coveralls.io/github/coderaiser/try-to-catch?branch=master
|
|
[CoverageIMGURL]: https://coveralls.io/repos/coderaiser/try-to-catch/badge.svg?branch=master&service=github
|
|
|
|
Functional `try-catch` wrapper for `promises`.
|
|
|
|
## Install
|
|
|
|
```
|
|
npm i try-to-catch
|
|
```
|
|
|
|
## API
|
|
|
|
### tryToCatch(fn, [...args])
|
|
|
|
Wrap function to avoid `try-catch` block, resolves `[error, result]`;
|
|
|
|
### Example
|
|
|
|
Simplest example with `async-await`:
|
|
|
|
```js
|
|
const tryToCatch = require('try-to-catch');
|
|
await tryToCatch(Promise.reject('hi'));
|
|
// returns
|
|
[ Error: hi]
|
|
```
|
|
|
|
Can be used with functions:
|
|
|
|
```js
|
|
const tryToCatch = require('try-to-catch');
|
|
await tryToCatch(() => 5);
|
|
// returns
|
|
[null, 5]
|
|
```
|
|
|
|
Advanced example:
|
|
|
|
```js
|
|
const fs = require('fs');
|
|
const tryToCatch = require('try-to-catch');
|
|
const {promisify} = require('util');
|
|
const readFile = promisify(fs.readFile);
|
|
const readDir = promisify(fs.readdir);
|
|
|
|
read(process.argv[2])
|
|
.then(console.log)
|
|
.catch(console.error);
|
|
|
|
async function read(path) {
|
|
const [error, data] = await tryToCatch(readFile, path, 'utf8');
|
|
|
|
if (!error)
|
|
return data;
|
|
|
|
if (error.code !== 'EISDIR')
|
|
return error;
|
|
|
|
return await readDir(path);
|
|
}
|
|
```
|
|
|
|
## Environments
|
|
|
|
In old `node.js` environments that not fully supports `es2015`, `try-to-catch` can be used with:
|
|
|
|
```js
|
|
var tryToCatch = require('try-to-catch/legacy');
|
|
```
|
|
|
|
## Related
|
|
|
|
- [try-catch](https://github.com/coderaiser/try-catch "try-catch") - functional try-catch wrapper.
|
|
|
|
## License
|
|
|
|
MIT
|
|
|