ARR*_*RRG 5 java design-patterns debouncing
我想这里可能有一个名字,但我不知道.所以我的第一个问题是要知道这种技术的名称.
这是一个例子:假设您正在网页上实施实时搜索.每次用户在搜索框中键入内容时,您都会触发新的搜索查询,并尽可能经常更新结果.这是一个愚蠢的事情,因为你会发送比实际需要更多的查询.每2-3个字母发送一次请求或每100毫秒发送一次请求可能就足够了.
因此,一种技术是在键入键后立即执行查询,如果仍有计划但未执行的查询,则取消它们,因为它们现在已经过时了.
现在更具体地说,是否有特定的模式或库来解决Java中的这个问题?
我必须在Swing应用程序中解决问题,并且我使用了ExecutorService,它返回了我可以取消的ScheduledFutures.问题是我必须手动为我想要"缓冲"的每个方法调用创建一个Runnable,并跟踪每个Future以取消它.
我确定我不是第一个实现这样的东西的人,所以某处必须有可重复使用的解决方案?可能是Spring中有注释和代理的东西?
ARR*_*RRG 12
鉴于其他答案,并经过一些搜索,似乎确实没有库可以做我想要的.
我创建了一个并将其放在GitHub上.这个问题的未来读者可能会发现它很有趣.
https://github.com/ThomasGirard/JDebounce
我不认为这是非常好的,但至少它是有效的,可以用声明的方式使用:
@Debounce(delayMilliseconds = 100)
public void debouncedMethod(int callID, DebounceTest callback) { }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2217 次 |
| 最近记录: |