私は非同期アクションfetchTasks
を持っています。これにはタスクのリストが与えられており、各タスクの要求が送信されます。フロントエンドは一度に5つのリクエストしか送信できないようにしたい。多くのコンポーネントにはAjaxの機能があるので、私はreduxストア内にリクエストカウンタを実装することに決めました。この値はfetchCount
と呼ばれ、ユーザーが要求を送信できるようにするかどうかを確認するために多くのコンポーネントで使用されます。ストアを非同期Reduxアクションに接続する方法
問題はfetchTasks
で、タスクリストで5つ以上のタスクを取得できるようになりました。私はfetchCount
が0に達するまで最初にリクエストを送信することでそれを処理しました。その後、フェッチのためにサーバーの応答が受け取られるたびに再帰的にfetchTasks
を呼び出します。
function fetchTasks(taskList){
return dispatch => {
while(taskList.length > 0 && fetchCount > 0){ // <-- I need fetchCount to be up to date with the store
decrementFetchCount(); //a redux action
let task = taskList.pop();
$ajax({
url: `/do/${task}`,
success:(data)=>{
processData(data); // redux action
incrementFetchCount(); // a redux action
dispatch(fetchTasks(taskList));
}
});
}
}
}
私の問題は、私はその実行時間の任意の時点でfetchCount
の価値を認識するfetchTasks
が必要だということです。私はそれをストアに接続することが重要だと考えていますが、ストアに関数を接続する方法はわかりません。そこに問題があります。 また、これはにおいがします。誰かがこれを実装する別の方法を提案したい場合は、それも有効な回答になります。
あなたはそれがすべてのユーザによって操作に対して安全にしたい場合は、クライアント側でこれを実行しないでください。クライアント上で実行されるコードは、ユーザーが任意に変更できます。 – Timo
私は気付いていますが、私はそれについて心配していません。これは内部ツールに過ぎません。しかし、ヘッドアップありがとう –