在超时时调度自我操作
Dispatch self action in a timeout
出于某种原因,我无法在超时内调用相同的函数。如果这不是 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
}
};
}
setTimeout( initialize, 250 );
这不会执行任何操作,因为 initialize
是一个函数,而 returns 是另一个函数。所以在 250ms 之后,setTimeout 会调用这个函数,你不会注意到任何东西。
setTimeout( dispatch( initialize ), 250 );
以上也不会做任何有用的事情。 dispatch( initialize )
立即执行,returns 函数将在 250 毫秒后调用,这不是您想要的。看起来你在这里的意思是这样的:
setTimeout( () => dispatch( initialize() ), 250 );
您需要传递调用 dispatch
的函数,并且 dispatch
需要接收动作创建者的值,它可以是像 { type: 'SOME_ACTION', payload: 1 }
这样的对象或函数像 dispatch => dispatch({ type: 'SOME_ACTION', payload: 1 })
.
如果这有点令人困惑,请通读位于 https://github.com/gaearon/redux-thunk 的 redux-thunk GitHub 页面上的示例。
出于某种原因,我无法在超时内调用相同的函数。如果这不是 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
}
};
}
setTimeout( initialize, 250 );
这不会执行任何操作,因为 initialize
是一个函数,而 returns 是另一个函数。所以在 250ms 之后,setTimeout 会调用这个函数,你不会注意到任何东西。
setTimeout( dispatch( initialize ), 250 );
以上也不会做任何有用的事情。 dispatch( initialize )
立即执行,returns 函数将在 250 毫秒后调用,这不是您想要的。看起来你在这里的意思是这样的:
setTimeout( () => dispatch( initialize() ), 250 );
您需要传递调用 dispatch
的函数,并且 dispatch
需要接收动作创建者的值,它可以是像 { type: 'SOME_ACTION', payload: 1 }
这样的对象或函数像 dispatch => dispatch({ type: 'SOME_ACTION', payload: 1 })
.
如果这有点令人困惑,请通读位于 https://github.com/gaearon/redux-thunk 的 redux-thunk GitHub 页面上的示例。