2017-11-08 6 views
0

何らかの理由で私はタイムアウト内で同じ機能を呼び出すことはできません..これはアクション機能ではない場合はうまく動作します..これはちょうど不可能ですか?私はちょうどinitializeが別の関数を返す関数であるので、これは、何もしませんあなたディスパッチ自己アクションをタイムアウトで

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

今後の参考として、「動作しません」は問題の非常に弱い記述です。それはなぜ機能しないのですか?あなたは何を期待していますか?何かエラーがありますか? – chipit24

答えて

1
setTimeout(initialize, 250); 

に感謝...私は上を移動したりハックを行うことができますので、確認したいです。したがって、250ms後にsetTimeoutがこの関数を呼び出し、何も気づかないでしょう。

setTimeout(dispatch(initialize), 250); 

上記は、何も役に立ちません。 dispatch(initialize)が直ちに実行され、関数は250ms後に呼び出される関数を返します。これはあなたが望むものではありません。それは何をここで行うことを意図することは、このですのようになります。どちらか{ type: 'SOME_ACTION', payload: 1 }のようなオブジェクトになりますあなたは、アクションの作成者の値を受け取るためにdispatchを呼び出す関数、およびdispatchニーズを渡す必要があり

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

、またはdispatch => dispatch({ type: 'SOME_ACTION', payload: 1 })のような関数です。

少し混乱している場合は、redux-thunk GitHubページ(https://github.com/gaearon/redux-thunk)の例を参照してください。

+0

それは完全に働いた。私はあなたが指摘したように()=>を忘れてしまった。タイ – user1189352

関連する問題