在超时中发送自动操作

时间:2017-11-08 00:24:50

标签: reactjs redux react-redux redux-thunk

由于某种原因,我不能在超时内调用相同的函数..如果这不是一个Action函数它工作得很好..这是不可能的吗?我只是想确保这样我可以继续前进或者做一个黑客...谢谢

export function initialize () {
  return function ( dispatch ) {

    if ( window.someAPIVar ) {
      console.log( 'done' );
    }
    else {
      console.log( 'looping' );
      //setTimeout( dispatch( initialize ), 250 );  // does not work
      //setTimeout( initialize, 250 );  // does not work
    }
  };
}

1 个答案:

答案 0 :(得分:3)

setTimeout( initialize, 250 );

这将不执行任何操作,因为initialize是一个返回另一个函数的函数。因此,在250ms之后,setTimeout将调用此函数,您将不会注意到任何内容。

setTimeout( dispatch( initialize ), 250 );

以上也没有做任何有用的事情。 dispatch( initialize )立即执行,它返回的函数将在250ms后调用,这不是你想要的。看起来你打算在这里做的是:

setTimeout( () => dispatch( initialize() ), 250 );

您需要传递一个调用dispatch的函数,而dispatch需要接收一个动作创建者的值,该动作创建者将是{ type: 'SOME_ACTION', payload: 1 }之类的对象或类似{的函数{1}}。

如果这有点令人困惑,请阅读https://github.com/gaearon/redux-thunk上redux-thunk GitHub页面上的示例。