如何使用redux-saga创建领先的去抖动

时间:2018-05-23 13:02:50

标签: javascript redux redux-saga saga debounce

有没有办法进行领先的去抖?

食谱上的示例仅显示尾随的去抖动。所以下面是尾随的debounce示例,我们将逻辑延迟500ms:

import { call, cancel, fork, take, delay } from 'redux-saga/effects'

function* handleInput(input) {
  // debounce by 500ms
  yield delay(500)
  ...
}

function* watchInput() {
  let task
  while (true) {
    const { input } = yield take('INPUT_CHANGED')
    if (task) {
      yield cancel(task)
    }
    task = yield fork(handleInput, input)
  }
}

我想在第一次调用时执行逻辑,取消任何后续调用,直到500ms结束。

修改

这可以通过使用takeLeading来完成,然后在你想要去抖动的时候延迟最后的传奇。

1 个答案:

答案 0 :(得分:1)

这可以通过使用takeLeading来完成,然后在你想要去抖动的时候延迟最后的传奇。