我正在使用 mobx 商店中的 lodash 库中的去抖动:
setSettingsDebounced = debounce(flow(function* (which) {
try {
yield patchLightSettings(which);
}
}.bind(this)), 200);
此方法的调用方式如下:
this.setSettingsDebounced('something');
这一切都很好,我的问题是:我应该如何传递 wait (当前已硬编码为 200 )参数进行反跳操作,所以仍然可以符合预期?
答案 0 :(得分:1)
您可以像这样简单地包裹防抖:
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
。
所以在您的情况下:
setSettingsDebounced = debounceWithParam(setSettingsFn, DELAY);