Как передать параметр ожидания debounce - PullRequest
0 голосов
/ 26 октября 2018

Я использую debounce из lodash библиотека в mobx store:

setSettingsDebounced = debounce(flow(function* (which) {
    try {
      yield patchLightSettings(which);
    }
}.bind(this)), 200);

Этот метод называется так:

this.setSettingsDebounced('something');

Это все работает нормально, моя проблема: как мне передать параметр wait (который в настоящее время жестко задан в 200 ) для debounce, чтобы он по-прежнему работал, как и ожидалось

1 Ответ

0 голосов
/ 26 октября 2018

Вы можете просто обернуть дебат так:

const DELAY = 2000
const debounceWithParam = (fn, timeInMs) => _.debounce(fn, timeInMs)
const myFn = () => console.log('FOOOOO')

const myDebouncedFn = debounceWithParam(myFn, DELAY)

myDebouncedFn()
myDebouncedFn()

// Wait for one "FOOOOO" in the console :)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

Обратите внимание, что будет показан только один FOOOOO, хотя мы вызывали новую функцию 2 раза.

Итак, в вашем случае:

 setSettingsDebounced = debounceWithParam(setSettingsFn, DELAY);
...