Suppose I have a method that does some asynchronous tasks. Let's say it refreshes user's access permission and it may take several minutes depending on the internet connection speed or whatever.

I have to call this method periodically (i.e. scheduled call using `NSTimer`'s method `scheduledTimerWithTimeInterval: target: selector: userInfo: repeats:`)

```
-(void)refreshPermission {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        // do something that takes a few minutes
    });
}

```

Now I call this method as `timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(refreshPermission) userInfo:nil repeats:YES];`. That is, this call is fired every 10 seconds.

> 
> What I need to do is, I need to somehow skip one (or, more than one)
>  scheduled call to this method **if something is happening inside that
>  asynchronous block** (*Let's say, user's access permission hasn't been
>  updated*).
> 
> 
> 

But once the block is done (*that is, user's access permission has been updated*), **scheduled call with timer should resume.**

Any idea or any sample on how to accomplish this??