Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ipluser/promise-interceptor
An interceptor tool for Promise.
https://github.com/ipluser/promise-interceptor
interceptor promise promise-library
Last synced: 10 days ago
JSON representation
An interceptor tool for Promise.
- Host: GitHub
- URL: https://github.com/ipluser/promise-interceptor
- Owner: ipluser
- License: mit
- Created: 2017-04-26T03:47:41.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-03-10T16:22:50.000Z (almost 7 years ago)
- Last Synced: 2024-04-25T16:41:20.697Z (9 months ago)
- Topics: interceptor, promise, promise-library
- Language: JavaScript
- Size: 10.7 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# promise-interceptor
An interceptor tool for `Promise`.
## Quick Start
Installation:
```js
$ tnpm install --save promise-interceptor
```Usage:
- intercept a `Promise`
```js
import { Interceptor, execute } from 'promise-interceptor'const interceptor = new Interceptor()
interceptor.use((res) => {
// do something with response data
return res
}, (err) => {
// do something with response error
return Promise.reject(err)
})const myPromise = new Promise((resolve, reject) => {
// todo
})const wrappedPromise = execute(myPromise, interceptor)
wrappedPromise((res) => {
// todo
}, (err) => {
// todo
})
```- intercept a function that must return a `Promise`
```js
import { Interceptor, execute, connect } from 'promise-interceptor'const interceptor = new Interceptor()
interceptor.use((res) => {
// do something with response data
return res
}, (err) => {
// do something with response error
return Promise.reject(err)
})const myFunction = () => {
// todo// must return a Promise
return new Promise((resolve, reject) => {
// todo
})
}const wrappedFunction = connect(interceptor)(myFunction)
wrappedFunction().then((res) => {
// todo
}, (err) => {
// todo
})
```## API
### `Interceptor`
An class that is used to manage `Promise` interceptors.
#### `use([fulfilled], [rejected])`
Add a interceptor that includes fulfilled or rejected handler.
```js
// add fulfilled handler
interceptor.use((res) => {
// todo
return Promise.resolve(res)
})// add rejected handler
interceptor.use(undefined, (err) => {
// todo
return Promise.reject(err)
})// add fulfilled and rejected handler
interceptor.use((res) => {
// todo
return Promise.resolve(res)
}, (err) => {
// todo
return Promise.reject(err)
})
```#### `remove(handler)`
Remove the specified handler.
```js
const fulfilledHandler = (res) => {
// todo
return Promise.resolve(res)
}interceptor.use(fulfilledHandler)
// ...
interceptor.remove(fulfilledHandler)
```#### `forEach(callback)`
Iterate over all the interceptors.
```js
interceptor.forEach((fulfilled, rejected) => {
// todo
})
```### `execute(Promise, Interceptor)`
Execute a `Promise` with `Interceptor`.
```js
execute(myPromise, interceptor)
```### `connect(interceptor)`
Connect a function to a `Interceptor`, the function must return a `Promise`. It wrap the function with `Interceptor` and return a new function for you to use.
```js
const wrappedFunction = connect(interceptor)(myFunction)wrappedFunction(args).then((res) => {
// todo
}, (err) => {
// todo
})
```