Calling depending Web Services + dispatch_group_t in iOS

What is the best approach to call the web services in a chain?

Create a dispatch group

    dispatch_group_t serviceGroup;

Call the first function/web service

-(void)callFirstWebService {
    serviceGroup = dispatch_group_create();

//Call 1st web service here, In the completion block, call the second method which you want to perform serially
[self callSecondWebService];


 dispatch_group_notify(serviceGroup,dispatch_get_main_queue(),^{
        // Won't get here until everything has finished        
        NSLog(@"All Tasks finished");
//Reload table or another task which you want to perform when both service finished
        
    });
}


-(void) callSecondWebService{
    dispatch_group_enter(serviceGroup);
//Call 2nd web service and in the completion block, write the below code

        dispatch_group_leave(serviceGroup);
}


//*******************Theoretical Explantion*****************

  1. Create a method where you want to call webservice. Depending on response, you want to call another webservice/method. After completion of all task, you want to perform last task which you write in first method itself (dispatch_group_notify).
  2. Create the dispatch group in first method
  3. In second method(which you want to perform serially), write dispatch_enter and dispatch_leave. It will ensure that the second task completed successfully.
  4. When all the dispatch groups leave, the dispatch group gets notified automatically and block will executes.

Comments

Popular posts from this blog

Exception Handling - Objective C

Vector graphics in iOS

How to show activity indicator in watch kit