たとえば、setInterval(function(){yield call(api、param)}、1000)
インターフェースをポーリングするにはどうすればよいですか。yieldを使用しないと、状態を操作できません。
while (true) {
yield call(delay, 1000);
yield call(api, params);
}
このような遅延を書き込むと、undefindがredux-sagaのユーティリティにあることが報告されます。それでは、dvaはどのように遅延を導入する必要がありますか?
const delay = timeout => {
return new Promise(resolve => {
setTimeout(resolve, timeout);
});
};
私たちのプロジェクトは現在dvaでリファクタリングされていますが、この問題が発生しました、兄弟、ありがとう兄弟Qian
試してみました、うまくいきました、ありがとう
@sorryccページに、このポーリングを終了したい操作があります。どうすればよいですか?
こんにちは、
佐賀のエフェクト処理に関する詳細なチュートリアルはありますか?ポーリングの終了、再実行など、同じ問題が発生しました。簡単な方法はフラグで検出でき、cancel、fork、takeLatestもあります。学習する例をいくつか挙げていただけませんか。
ありがとうございました。
@sorryccもう一度お聞きしたいのですが、もしそうなら、特定のイベントがトリガーされたときにループを停止できるとしたらどうでしょうか?
redux-sagaのフォークを使用してタスクを生成し、必要に応じてタスクをキャンセルする必要があります。
* forkInterval(actions, { fork, cancelled, put }) {
globalInterval = yield fork(function* () {
try {
while (true) {
yield delay(3000);
yield put({ type: 'youraction' });
}
} finally {
if (yield cancelled()) {
// 取消之后的操作,这里什么都不做
}
}
});
},
* clearInterval(actions, { cancel }) {
yield cancel(globalInterval);
},
最も参考になるコメント