Dart/Flutter防抖与节流

背景

在一些计算较为复杂、操作较为耗时或者操作为引起页面重绘的场景,如果事件触发的频率毫无限制,除了带来性能上的负担,还会导致糟糕的用户体验。如:根据输入框输入的内容向服务端查询相关文章,用户多次点击收藏按钮……

Dart/Flutter防抖与节流
通过节流和去抖动来限制您的操作和功能。抛出异常时重试。

实现

防抖(debounce)

就是指触发事件后在n秒内函数只能执行一次,如果在n秒内又触发了事件,则会重新计算函数执行时间。

常用于实时搜索:用户连续输入,等停下来再去触发搜索接口

调用:

节流(throttle)

让函数有节制地执行,而不是毫无节制的触发一次就执行一次。什么叫有节制呢?就是在某个时间内只能执行一次。

常用于按钮重复提交

调用:

封装方法复用参考

使用