实现了 debounce/throttle 的 timeout 包要加入 Emacs 了

通过 timeout ,这一问题看似能够在一定程度上得到缓解:

但问题没这么简单,这实际上阻止了 tab-line 从每个 buffer 获取正确的分组信息,因为一次调用后指定的节流时间内的其余调用会直接返回第一次调用的返回结果,从而导致不正确的分组。如果你对 tab-line 的代码进行一些分析,你会发现我们实际上需要节流的是 tab-line-format

你的这个例子很好,我想要考虑要不要发到邮件列表里。

这个也是我为什么不认可这个包的原因。throttle 和 debounce 是用于异步编程里的。你现在是把一个本来写的时候是假设同步的逻辑写的代码给强制 delay 了,那么从逻辑上来说,这个代码就变成 不正确 的了。实现一个正确的 throttle 和 debounce,是不可能只改这个函数本身,而不去改调用方的逻辑的,肯定要改动调用方的逻辑,把这个调用方的调用要么改成异步的,要么修改为正确的更新和查找缓存的逻辑。

1 个赞