lunes, 11 de julio de 2016

iOS: Grouping asyn tasks / Grouping server calls

Objective C

dispatch_group_t group = dispatch_group_create();
    
    dispatch_group_enter(group);
    [self _someMethodWithCallback::^() {
        
        NSLog(@"Finished 1");
        dispatch_group_leave(group);
    }];

    dispatch_group_enter(group);
     [self _anotherMethodWithCallback::^() {
        
        NSLog(@"Finished 2");
        dispatch_group_leave(group);
    }];
    
    dispatch_group_notify(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
        
        NSLog(@"Finished all");

    });

Swift

   let group: DispatchGroup = DispatchGroup()
   
   // For every endpoint call
   group.enter()
   someMethodWithCallback(onCompletion: {
                group.leave()
                }, onError: { (error) in
                    group.leave()
            })

    …

   group.notify(queue: DispatchQueue.main) {
            onCompletion()
        }

No hay comentarios:

Publicar un comentario