0
我想限制一个方法可以被调用的频率。 我的目的是限制我处理API回调的速度。 (当我希望它们时,某些API回调不会停止)。最佳限制方法调用率,一个方法的频率可以调用
我有一个工作解决方案,请提供一个更清洁的解决方案。
请提供更好的解决方案。
-(void)callbackRateLimited:(id)someDataProvided {
static NSDate *date;
static NSUInteger count;
if (!date) {
date = [NSDate new];
count = 0;
}
double duration = fabs([date timeIntervalSinceNow]);
NSLog(@"Duration :%f count:%lu",duration,count);
if (count == 0) {
NSLog(@"No waiting... processing API");
[self processAPICallback];
count++;
return;
}
if (duration < 10.0f) { // 10 seconds
NSLog(@"waiting.... too fast slow down");
return;
}
NSLog(@"reset waiting state");
//count = 0; not required here.
date = nil;
}
请注意,您最终可能会错过一些更改。你需要的东西说,“嘿!一个回调被压制,如果我们没有看到N mess内的回调,然后继续,并启动任何可能还没有处理的变化。”这可以通过多种方式完成,其中会有不同程度的不一致性。 – bbum