Redux Sagaのタイムアウトのハンドリング方法

@iwasaki 7views 更新:2017年9月21日

sagaでtakeを使うといつまでも待ち受けてしまうことがあるので、タイムアウトとエラーのハンドリングをうまいことやるには以下のようにやるとよさそうです。

yield put(actions.requestRefreshUsers());
const { success, error, timeout } = yield race({
        success: take('success'),
        error: take('failure'),
        timeout: delay(5000).then(() => true),
      });
      if (error) {
        throw new Error('fail refresh users.');
      }
      if (timeout) {
        throw new Error('refresh users has timeout.');
      }

参考

https://qiita.com/k_tada/items/8f92260f62d4a2c9ae69

https://redux-saga.js.org/docs/advanced/RacingEffects.html

http://mizchi.hatenablog.com/entry/2017/05/08/013632

https://medium.com/@rukurx/redux-saga%E3%81%A7%E7%A2%BA%E8%AA%8D%E7%94%A8%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B-6c76f4ee189c

https://qiita.com/kuy/items/716affc808ebb3e1e8ac

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません