Ответ будет меняться в зависимости от некоторых критериев - например, хотите ли вы ждать N мс после изменения N или, если снимите флажок, хотите отменить работника - но это может дать вам приблизительное представление:
function * rootSaga() {
let prevTask
yield takeEvery(CHANGE_N, function*() {
if (prevTask) prevTask.cancel();
const n = yield select(getN);
task = yield throttle(n, FOO, fooSaga);
});
}
Если throttle
недостаточно, вы можете заменить его на пользовательский наблюдатель, используя delay
и fork
.