5

有没有办法做一个领先的去抖?

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

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)
  }
}

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

编辑

这可以通过使用takeLeadingthen 将 saga 延迟到最后你想要去抖动的时间来完成。

4

1 回答 1

5

这可以通过使用takeLeadingthen 将 saga 延迟到最后你想要去抖动的时间来完成。

于 2018-05-25T08:34:38.350 回答