如何使用redux-saga创建领先的防弹跳

chr*_*fee 5 javascript redux redux-saga 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)
  }
}
Run Code Online (Sandbox Code Playgroud)

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

编辑

可以通过使用takeLeadingsaga,然后将saga延迟多长时间来完成。

chr*_*fee 5

这可以通过使用takeLeading然后在最后延迟传奇来完成,无论您想要去抖多久。