【问题标题】:How to call redux-saga action continuously after every 60 seconds如何在每 60 秒后连续调用 redux-saga 动作
【发布时间】:2019-07-01 07:33:25
【问题描述】:

我正在处理需要每 60 秒后连续调用单个 API 的情况

我关心的是如何使用 redux-saga 调用相同的 API 请求

我使用的是普通的 redux-saga 动作,例如,获取员工列表,它每 60 秒获取一次员工列表

使用redux-saga、react-redux和react

【问题讨论】:

    标签: reactjs redux react-redux redux-saga


    【解决方案1】:

    随着新版本的 Redux 延迟发生了一些变化。

    例子:

    import { delay, put, takeLatest, all } from 'redux-saga/effects';
    
    
    export function* fetchContinuously(action) {
      yield call(api);
    
      yield delay(60000);
    
      yield put({ type: "FETCH_CONTINUOUSLY" })
    }
    
    function* actionWatcher() {
      yield takeLatest('FETCH_CONTINUOUSLY', fetchContinuously)
    }
    
    
    export default function* rootSaga() {
      yield all([
        actionWatcher(),
      ]);
    }
    

    【讨论】:

      【解决方案2】:
      import { delay } from 'redux-saga';
      import { call, put, takeLatest, all } from 'redux-saga/effects';
      
      
      export function* fetchContinuously(action) {
        yield call(api);
      
        yield call(delay, 60000);
      
        yield put({ type: "FETCH_CONTINUOUSLY" })
      }
      
      function* actionWatcher() {
        yield takeLatest('FETCH_CONTINUOUSLY', fetchContinuously)
      }
      
      
      export default function* rootSaga() {
        yield all([
          actionWatcher(),
        ]);
      }
      

      【讨论】:

      • 它很好,但我希望在某个地方实现该 API,所以很困惑,我需要把那个 API 代码放在哪里,从哪里可以调用这个传奇函数
      • 你可以把它放在一个特定的文件中。 api 代码不依赖于 redux-saga 代码,它可以像 fetch 调用一样简单。而且你不会直接调用 redux-saga 函数。您对其进行设置,以便 redux 操作将触发它。
      • 请告诉我如何在上面给出的示例中使用我的 API
      • 请粘贴您的 api 代码,以便我知道您在做什么。
      猜你喜欢
      • 2016-10-12
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2011-03-09
      • 1970-01-01
      • 2020-01-04
      相关资源
      最近更新 更多