美文网首页
防抖工具

防抖工具

作者: 欧巴刚弄死他 | 来源:发表于2017-04-27 09:46 被阅读0次

有点类似NSTimer,取名叫HighFrequencyTriggerFilter,附上代码,头文件:

#import <Foundation/Foundation.h>

@interface HighFrequencyTriggerFilter : NSObject

/**
 无论是触发成功还是最后取消掉,该对象都会失效,需要重新创建

 @param delayTime 缓冲时间
 @param triggerHandler 成功触发后调用的block
 @return 返回可操作的对象
 */
+ (instancetype)filterWithDelayTime:(NSTimeInterval)delayTime triggerHandler:(void(^)())triggerHandler;

/**
 触发
 */
- (void)trigger;
/**
 取消
 */
- (void)cancel;

@end

执行文件:

#import "HighFrequencyTriggerFilter.h"

@interface HighFrequencyTriggerFilter ()

@property (nonatomic, assign) NSTimeInterval delayTime;
@property (nonatomic, copy) void (^triggerHandler)();
@property (nonatomic, strong) NSTimer *timer;

@end

@implementation HighFrequencyTriggerFilter

+ (instancetype)filterWithDelayTime:(NSTimeInterval)delayTime triggerHandler:(void(^)())triggerHandler {
    HighFrequencyTriggerFilter *filter = [HighFrequencyTriggerFilter new];
    filter.delayTime = delayTime;
    filter.triggerHandler = triggerHandler;
    return filter;
}

- (void)trigger {
    [self.timer invalidate];
    self.timer = nil;
    self.timer = [NSTimer scheduledTimerWithTimeInterval:self.delayTime target:self selector:@selector(delayTrigger) userInfo:nil repeats:NO];
}

- (void)delayTrigger {
    if (self.triggerHandler) {
        self.triggerHandler();
    }
    [self cancel];
}

- (void)cancel {
    [self.timer invalidate];
    self.timer = nil;
    self.triggerHandler = nil;
}

@end

github地址:
https://github.com/guolingege/HighFrequencyTriggerFilter

相关文章

  • 防抖工具

    有点类似NSTimer,取名叫HighFrequencyTriggerFilter,附上代码,头文件: 执行文件:...

  • 函数防抖和函数节流

    一个方便理解正常情况、函数防抖、函数节流情况的可视化工具:正常情况、函数防抖、函数节流情况可视化工具 1、概念 (...

  • 索尼机身防抖和镜头防抖

    索尼微单系统拥有带防抖功能的机身和带防抖功能的镜头。无论防抖组件位于哪里,它们都属于光学防抖。 机身防抖 机身防抖...

  • JavaScript - 防抖和节流

    lodash工具库里有实现防抖和节流的函数 防抖和节流严格算起来应该属于性能优化的知识,但实际上遇到的频率相当高,...

  • js 防抖 节流

    节流 防抖1 防抖2

  • javaScript 防抖函数

    一. 防抖函数的定义与使用 防抖函数的定义 防抖函数的调用 二. 防抖函数应用场景 其实在HTML 和javaSc...

  • 防抖与节流

    1. 防抖函数 1.1 防抖定义: 函数防抖(debounce):当持续触发事件时(例如mousemove),一定...

  • 项目常用代码

    节流 } 防抖 } 页面滚动(requestAnimationFrame) vue全局点击防抖

  • 函数防抖防抖/节流

    众所周知,函数节流和函数防抖都是优化高频率执行js代码的一种方法,二者的区别及使用方法如下: 函数节流 函数防抖,...

  • JS函数防抖

    JS 中的函数防抖 一、什么是函数防抖? 概念: 函数防抖(debounce), 就是指触发事件后,在 n 秒内函...

网友评论

      本文标题:防抖工具

      本文链接:https://www.haomeiwen.com/subject/bargzttx.html