JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 134
  • Score
    100M100P100Q88456F
  • License MIT

Helper for redux-saga, auto wrap saga with try-catch, prevent one throw stop all.

Package Exports

  • redux-saga-catch
  • redux-saga-catch/build/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (redux-saga-catch) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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

npm i redux-saga-catch -S

helpers with auto try-catch

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

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

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.

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

declare module 'redux'{
  interface Action{
    type: any
    payload?: any
    [key: string]: any
  }
}