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

ここで、500ms が終了するまで後続の呼び出しをキャンセルする最初の呼び出しでロジックを実行したいと思います。

編集

これはtakeLeading、デバウンスしたい長さだけ最後にサガを遅らせることによって行うことができます。

4

1 に答える 1