有沒有辦法在Redux-Saga中反彈,後續的呼叫是在相同的延遲後面排隊的,每次新的任務都會加入隊列。類似於lodash的反彈https://lodash.com/docs#debounce。Redux傳奇反彈而不僅僅是延遲/取消
我目前有一些類似於redux-saga的debounce,但刪除了取消部分,因爲我仍然想要執行每個任務,我只想捆綁所有事件以便在稍後的單個線程中觸發。
我有什麼當前:
const deferTime = 2000;
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));
export function* sendClickEvent (event, debounce) {
if (debounce) {
yield call(delay, deferTime);
}
yield put(action(event));
}
export function* clickSaga() {
while (true) {
const action = yield take(WIDGET_CLICKED);
const state = yield select();
const debounce = action.meta && action.meta.debounce;
const payload = getWidgetClickPayload(state, action);
const defaultData = getDefaultData(state);
const event = {
name: payload.name,
data: Object.assign(defaultData, payload.data)
};
yield fork(sendClickEvent, event, debounce);
}
}
我試着分配前叉變量,然後檢查是否正運行(.isRunning()),但不知道我怎麼會被再次推遲推遲這一叉。