首页 > 解决方案 > 取消lodash的去抖动,不调用函数

问题描述

我的问题是,是否有办法取消 lodash 的去抖动,而不调用去抖动函数。.cancel()from lodash 仍然调用该函数。

也许我正在寻找错误的方法。如果是这样,还有其他解决方案吗?

先感谢您。

标签: javascriptlodash

解决方案


调用cancel去抖动函数上的方法不会调用它,除非它位于超时的后沿。您可以使用该trailing选项进行配置。文档

const fn1 = () => console.log('Called 1');
const fn2 = () => console.log('Called 2');
const fn3 = () => console.log('Called 3');

const debouncedFn1 = _.debounce(fn1, 1000);
const debouncedFn2 = _.debounce(fn2, 1000);
const debouncedFn3 = _.debounce(fn3, 1000, { trailing: false });

// Will not log
debouncedFn1();
setTimeout(debouncedFn1.cancel, 200);

// Will log
debouncedFn2();
setTimeout(debouncedFn2.cancel, 1000);

// Will not log
debouncedFn3();
setTimeout(debouncedFn3.cancel, 1000);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.19/lodash.min.js"></script>


推荐阅读