由于某种原因,我不能在超时内调用相同的函数..如果这不是一个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
}
};
}
答案 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页面上的示例。