throttle method

dynamic Function() throttle([
  1. Duration delay = const Duration(seconds: 1)
])

截流函数 在触发事件时,当即执行目标操做,同时给出一个延迟的时间,在该时间范围内若是再次触发了事件,该次事件会被忽略,直到超过该时间范围后触发事件才会被处理。 如设定延迟时间为 1000ms , 若是在 1000ms 内再次触发事件,该事件会被忽略 若是 1000ms 延迟结束,则事件不会被忽略,触发事件会当即执行目标操做,并再次开启 1000ms 延迟

Implementation

Function() throttle([Duration delay = const Duration(seconds: 1)]) {
  bool enable = _funcThrottle[hashCode] ?? true;
  return () {
    if (enable) {
      _funcThrottle[hashCode] = false;
      this.call();
      delay.delayed(() {
        _funcThrottle.remove(hashCode);
      });
    }
  };
}