在Timer中调度Action,但它会立即执行

时间:2018-01-26 06:23:49

标签: reactjs redux

我只想为对象的属性创建一个计时器,并在计时器关闭后执行它,而是立即调度。我错过了什么吗?我怎么能绕过这个?我认为这将是我可以轻松谷歌,但我出乎意料地没有找到任何东西

// example page object
pageObj: {
    id: someId,
    name: somePageName,
    timer: someTimerObj,
    //etc..
}

export const someFunc = () => ( dispatch ) => {
    let timerObj = setTimeout( () => dispatch( _getNextAction( someInfo ), 5000 ));  // this keeps getting executed right away when i just want it to execute when the timer goes off in 5 seconds
    dispatch( setPageProperty( pageObj.id, 'timer', timerObj ));
}

const _getNextAction = ( someInfo ) => ( dispatch ) => {
    if ( someInfo ) {
        dispatch( pageIn );
    }
    else {
        dispatch( pageOut );
    }
}

1 个答案:

答案 0 :(得分:1)

你错了一个右括号。

你写过

setTimeout( () => dispatch( _getNextAction( someInfo ), 5000 ));

什么时候应该

setTimeout(() => dispatch( _getNextAction( someInfo )), 5000);

我相信,因为你没有提供明确的超时值(因为5000被传递到dispatch而不是setTimeout),所以它会把它带到表示超时0并立即触发回调。