安排javascript未来调用并取消任何挂起的调用

安排javascript未来调用并取消任何挂起的调用,javascript,Javascript,我期待着做一个昂贵的API调用计划在未来5分钟内触发一个用户改变参数。如果用户在10秒后再次更改参数,我不希望在4M50和5m内调用,我希望基本上取消4M50内的调用,因为它没有实际意义 我在lodash中发现了debounce,它强制执行调用前的最短时间,但不会取消任何挂起但未执行的调用,因此虽然它防止快速调用,但仍然会执行不必要的调用,所以现在就完全正确了。有什么好主意吗 从去盎司文档: 取消公告函数带有一个cancel方法来取消延迟的func调用 因此,只需确保调用方法。在使用更改的参数重

我期待着做一个昂贵的API调用计划在未来5分钟内触发一个用户改变参数。如果用户在10秒后再次更改参数,我不希望在4M50和5m内调用,我希望基本上取消4M50内的调用,因为它没有实际意义

我在lodash中发现了debounce,它强制执行调用前的最短时间,但不会取消任何挂起但未执行的调用,因此虽然它防止快速调用,但仍然会执行不必要的调用,所以现在就完全正确了。有什么好主意吗


去盎司
文档:

取消公告函数带有一个
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);