安排javascript未来调用并取消任何挂起的调用
我期待着做一个昂贵的API调用计划在未来5分钟内触发一个用户改变参数。如果用户在10秒后再次更改参数,我不希望在4M50和5m内调用,我希望基本上取消4M50内的调用,因为它没有实际意义 我在lodash中发现了debounce,它强制执行调用前的最短时间,但不会取消任何挂起但未执行的调用,因此虽然它防止快速调用,但仍然会执行不必要的调用,所以现在就完全正确了。有什么好主意吗安排javascript未来调用并取消任何挂起的调用,javascript,Javascript,我期待着做一个昂贵的API调用计划在未来5分钟内触发一个用户改变参数。如果用户在10秒后再次更改参数,我不希望在4M50和5m内调用,我希望基本上取消4M50内的调用,因为它没有实际意义 我在lodash中发现了debounce,它强制执行调用前的最短时间,但不会取消任何挂起但未执行的调用,因此虽然它防止快速调用,但仍然会执行不必要的调用,所以现在就完全正确了。有什么好主意吗 从去盎司文档: 取消公告函数带有一个cancel方法来取消延迟的func调用 因此,只需确保调用方法。在使用更改的参数重
从
去盎司文档:
取消公告函数带有一个cancel
方法来取消延迟的func调用
因此,只需确保调用方法。在使用更改的参数重新调用方法之前,请取消
:
var debounced = _.debounce(api_func, 5 * 60 * 1000, { trailing: true });
在触发器处理程序中(必须在其作用域中对上述变量进行去公告
访问):
或者,只需使用内置计时器功能,解决方案应该是:
var timer;
在触发器中:
clearTimeout(timer);
timer = setTimeout(api_func, 5 * 6 * 1000);
@ss2k您使用了上述两种方法中的哪一种?我已经依赖于lodash,所以使用了debounce。
clearTimeout(timer);
timer = setTimeout(api_func, 5 * 6 * 1000);