将redux-saga与setInterval一起使用-如何以及何时产生

杜加·麦克唐纳

从thunk转移到sagas之后,我试图找到最佳的调用方法setTimeout,然后从该函数中调用另一个函数(在这种情况下corewar.step())。这是我的原始代码,符合我的预期。

  runner = window.setInterval(() => {

    for(let i = 0; i < processRate; i++) {
      corewar.step()
    }

    operations += processRate;

  }, 1000/60)

这段代码位于a里面saga,我相信我应该能够call像在应用程序其他区域一样包装函数调用

我尝试将setInterval呼叫包装在中,call而将其他所有内容都保留下来,这导致step()永不被调用。

  runner = yield call(window.setInterval, () => {

    for(let i = 0; i < processRate; i++) {
      corewar.step()
    }

    operations += processRate;

  }, 1000/60)

我试过了,将其保持不变,setInterval并将step()函数包装在调用中,并更改匿名函数签名,function*这也导致step()永不被调用。

  runner = window.setInterval(function*() {

    for(let i = 0; i < processRate; i++) {
      yield call([corewar, corewar.step])
    }

    operations += processRate;

  }, 1000/60)

最后,我尝试将两者包装在一起,这再次导致step()永不被调用。

  runner = yield call(window.setInterval, function*() {

    for(let i = 0; i < processRate; i++) {
      yield call([corewar, corewar.step])
    }

    operations += processRate;

  }, 1000/60)

感觉好像我在这里丢失了一些东西,所以我的问题是,我是否应该将这些功能call全部包装起来,还是这是错误的?

如果我应该将外部包裹setInterval在一个问题中,那么接下来的问题是我应该call如何将一个函数定义为一个call也要产生aputcall自身的参数?

克拉西米尔
const anotherSaga = function * () {
  const runner = yield call(setInterval, () => {
    console.log('yes');
  }, 1000);
  console.log(runner);
}

这对我来说很好。在您的第二个片段)的末尾有一个双精度字,应该只有一个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将getState与redux thunk一起使用

如何将setInterval与表单一起使用来创建闹钟?

如何以及何时使用刷新令牌?

将setInterval与requestAnimationFrame一起使用

如何与setInterval一起使用requestAnimationFrame?

将Redux.createStore与Immutable一起使用会引发“减少器不是函数(如何将Redux与Immutable.js和composeEnhancers一起使用)

将redux-saga与react-router一起使用

如何将redux-sagas与react-hooks一起使用

如何将react-redux'useSelector'与其他变量一起使用?

如何将Redux的useSelector和useDispatch挂钩与PropTypes一起使用

Redux-Form,如何将formValueSelector与动态字段名称一起使用?

如何将React.memo与react-redux连接一起使用?

如何将 redux-connect 与 reactjs 和 js-classes 一起使用?

如何将选择输入类型与redux-form一起使用?

如何将HOC与Redux Compose和Typescript一起使用

如何将redux-form与reselect一起使用

如何将useState与React-redux-firebase一起使用以重新渲染

如何将 redux 与 fela 一起使用并做出反应?

如何将 Redux Toolkit 与多个 React App 实例一起使用?

如何让@connect 装饰器与 redux-saga 一起工作?

如何在没有 typescript 的情况下将 next-redux-wrapper 与 redux-toolkit 一起使用

如何以及何时在Python中适当使用weakref

如何以及何时使用createForm vs createFormBuilder

如何以及何时在Julia中使用@async和@sync

如何以及何时使用“异步”和“等待”

ArrayList <String> vs String [],如何以及何时使用?

如何以及何时在Akka中使用ActorIdentity

如何以及何时使用通过AcquisitionUnstableContentProviderClient获得的ContentProviderClient?

我将如何以及何时使用Rake文件?