QNSingleFlight.h 913 B

123456789101112131415161718192021222324252627282930
  1. //
  2. // QNSingleFlight.h
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2021/1/4.
  6. // Copyright © 2021 Qiniu. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. NS_ASSUME_NONNULL_BEGIN
  10. typedef void(^QNSingleFlightComplete)(id _Nullable value, NSError * _Nullable error);
  11. typedef void(^QNSingleFlightAction)(QNSingleFlightComplete _Nonnull complete);
  12. @interface QNSingleFlight : NSObject
  13. /**
  14. * 异步 SingleFlight 执行函数
  15. * @param key actionHandler 对应的 key,同一时刻同一个 key 最多只有一个对应的 actionHandler 在执行
  16. * @param actionHandler 执行函数,注意:actionHandler 有且只能回调一次
  17. * @param completeHandler single flight 执行 actionHandler 后的完成回调
  18. */
  19. - (void)perform:(NSString * _Nullable)key
  20. action:(QNSingleFlightAction _Nonnull)action
  21. complete:(QNSingleFlightComplete _Nullable)complete;
  22. @end
  23. NS_ASSUME_NONNULL_END