有没有办法做一个领先的去抖?
食谱上的示例仅显示了尾随去抖动。所以下面是尾随去抖动示例,我们将逻辑延迟 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 毫秒结束。
编辑
这可以通过使用takeLeading
then 将 saga 延迟到最后你想要去抖动的时间来完成。