https://github.com/cyrilluce/redux-saga-catch
Helper for redux-saga, auto wrap saga with try-catch, prevent one throw stop all.
https://github.com/cyrilluce/redux-saga-catch
Last synced: over 1 year ago
JSON representation
Helper for redux-saga, auto wrap saga with try-catch, prevent one throw stop all.
- Host: GitHub
- URL: https://github.com/cyrilluce/redux-saga-catch
- Owner: cyrilluce
- License: mit
- Archived: true
- Created: 2017-06-27T03:29:29.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2025-02-11T11:24:51.000Z (over 1 year ago)
- Last Synced: 2025-03-14T12:06:13.752Z (over 1 year ago)
- Language: TypeScript
- Size: 28.3 KB
- Stars: 10
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
> [!IMPORTANT]
> This project is no longer maintained
---
# redux-saga-catch
Helper for redux-saga, auto wrap saga with try-catch, prevent one throw stop all.
redux-saga工具集,为了业务健壮,自动将saga进行try-catch包装,避免一个出错导致其它saga也出错中止。
# usage
## install
```sh
npm i redux-saga-catch -S
```
## helpers with auto try-catch
```js
import { takeEvery, takeLatest, throttle } from 'redux-saga-catch'
function* rootSaga(){
yield takeEvery(ACTION1, function*(){
console.log('ACTION1 will always trigger')
throw 'exception'
})
// same as takeLatest、throttle
}
```
## new helper `parallel` use to combine sagas with auto try-catch
```js
import { parallel } from 'redux-saga-catch'
function* rootSaga(){
yield parallel([
function*(){
throw 'exception'
},
function*(){
yield call(delay, 1000)
console.log('not affected')
}
])
}
```
## new helper `runAndTakeLatest` use to run task once before `takeLatest`, trigger will abort first running
```js
import { runAndTakeLatest } from 'redux-saga-catch'
function* saga(){
yield runAndTakeLatest(ACTION1, function*(){
console.log('Will run once without `ACTION1` fired.')
})
}
```
## new helper `watchLatest` and `runAndWatchLatest` use to re-run only `selector` returns changed.
```js
import { watchLatest } from 'redux-saga-catch'
function* saga(){
yield watchLatest(ACTION1, globalState => globalState.data, function*(data){
console.log('Only run on `globalState.data` changed (use deep equal).')
})
}
```
# Upgrade from 0.0.9
1.x has added typescript support, if you are using 0.x, and meeting issue with typings check, you can overwrite `redux`'s `Action` interface
```typescript
declare module 'redux'{
interface Action{
type: any
payload?: any
[key: string]: any
}
}
```