gpt4 book ai didi

javascript - 安排 javascript future 调用并取消任何待处理的调用

转载 作者:行者123 更新时间:2023-12-03 04:14:31 26 4
gpt4 key购买 nike

我希望在未来 5 分钟内执行一次昂贵的 API 调用,该调用会在用户更改参数时触发。如果用户 10 秒后再次更改参数,我不希望在 4 分 50 秒内进行调用,也不希望在 5 分秒内进行调用,我想在 4 分 50 秒内取消调用,因为它没有实际意义。

我在 lodash 中发现了 debounce,它强制执行调用前的最短时间,但它不会取消任何待处理但未执行的调用,因此虽然它可以防止快速调用,但它仍然会执行不必​​要的调用,所以现在就这样了。有什么干净的想法可以做到这一点吗?

https://lodash.com/docs/4.17.4#debounce

最佳答案

来自去抖文档:

The debounced function comes with a cancel method to cancel delayed func invocations

因此,只需确保在使用更改后的参数重新调用 method 之前调用 method.cancel 即可:

var debounced = _.debounce(api_func, 5 * 60 * 1000, { trailing: true });

并且在触发器处理程序中(必须在其范围内访问上述变量debounced):

debounced.cancel();
debounced( params );
<小时/>

或者,只需使用内置计时器函数,解决方案应该是:

var timer;

并在触发器中:

clearTimeout(timer);
timer = setTimeout(api_func, 5 * 6 * 1000);

关于javascript - 安排 javascript future 调用并取消任何待处理的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44199618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com