Javascript 如何在redux中使用setTimeout和dispatcher触发定期操作

Javascript 如何在redux中使用setTimeout和dispatcher触发定期操作,javascript,reactjs,flux,redux,Javascript,Reactjs,Flux,Redux,我如何/在哪里可以定期发送操作?使用递归setTimeout进行倒计时 从示例中可以看出,类似于以下内容: // Can also be async if you return a function export function incrementAsync() { return dispatch => { (function _r() { setTimeout(() => { // Yay! Can invoke sync or async

我如何/在哪里可以定期发送操作?使用递归
setTimeout
进行倒计时

从示例中可以看出,类似于以下内容:

// Can also be async if you return a function
export function incrementAsync() {
  return dispatch => {
    (function _r() {
      setTimeout(() => {
        // Yay! Can invoke sync or async actions with `dispatch`
        dispatch(increment());
        _r();
      }, 1000);
    })();
  };
}
那么这是一个好主意,还是有更好的方法解决这个问题,比如使用中间件或从其他地方创建操作

我更喜欢这个通用版本,我可以通过商店控制定时器的启动/停止


我已经设置了一个示例实现,请看一看您建议的方法,虽然有点复杂,但很好。通常,我会在组件生命周期方法中设置间隔(例如,
componentDidMount
/
componentWillUnmount
),并避免在其他操作上设置间隔

如果您确实需要这种灵活性,那么更好的选择是使用异步管理,并在可观察链的最末端执行
dispatch
操作。通过这种方式,您可以在需要的地方使用Redux(同步更新),并将异步合成留给Rx。

有一个很好的方法可以解决这个问题

Gustavo Machado给出了
componentDidMount
/
componentWillMount
解决方案和
redux
选项中的
dispatch
两个示例


它帮助了我,所以你可能想看看

由于这是可行的,我可能不会继续重新创建一个看起来总是一样的函数,而是只定义一次?我真的不明白增量的异步性。请记住,js事件处理不是很精确