iOS For循环执行AFNetworking请求

iOS For循环执行AFNetworking请求_第1张图片
屏幕快照 2017-12-19 下午1.46.25.png
需求:如下操作打印的文档为
 NSLog(@"开始");
    for (NSInteger i = 0; i < 5; i++) {
        [RequestUtil requestFavoriteGroup:appDelegate.userInfo.uid andBlock:^(NSArray *modelArr, NSError *error) {
            NSLog(@"第一层的循环请求,i=%ld",i);
            for (NSInteger j = 0; j < 3; j++) {
                [RequestUtil requestFavoriteGroup:appDelegate.userInfo.uid andBlock:^(NSArray *modelArr, NSError *error) {
                    NSLog(@"第二层的循环请求,i=%ld,j=%ld",i,j);
                }];
            }
        }];
    }
    NSLog(@"结束");
开始
 第一层的循环请求,i=0
 第二层的循环请求,i=0,j=0
 第二层的循环请求,i=0,j=1
 第二层的循环请求,i=0,j=2
 第一层的循环请求,i=1
 第二层的循环请求,i=1,j=0
 第二层的循环请求,i=1,j=1
 第二层的循环请求,i=1,j=2
 第一层的循环请求,i=2
 第二层的循环请求,i=2,j=0
 第二层的循环请求,i=2,j=1
 第二层的循环请求,i=2,j=2
 第一层的循环请求,i=3
 第二层的循环请求,i=3,j=0
 第二层的循环请求,i=3,j=1
 第二层的循环请求,i=3,j=2
 第一层的循环请求,i=4
 第二层的循环请求,i=4,j=0
 第二层的循环请求,i=4,j=1
 第二层的循环请求,i=4,j=2
 结束

一种写法:

dispatch_async(dispatch_get_global_queue(0, 0), ^{
        NSLog(@"开始");
        dispatch_semaphore_t sema = dispatch_semaphore_create(0);
        for (NSInteger i = 0; i < 5; i++) {
            [RequestUtil requestFavoriteGroup:@"8130d4174c2353af" andBlock:^(NSArray *modelArr, NSError *error) {
                NSLog(@"第一层的循环请求,i=%ld",i);
                dispatch_async(dispatch_get_global_queue(0, 0), ^{
                    dispatch_semaphore_t sema2 = dispatch_semaphore_create(0);
                    for (NSInteger j = 0; j < 3; j++) {
                        [RequestUtil requestFavoriteGroup:appDelegate.userInfo.uid andBlock:^(NSArray *modelArr, NSError *error) {
                            NSLog(@"第二层的循环请求,i=%ld,j=%ld",i,j);
                            dispatch_semaphore_signal(sema2);
                        }];
                        dispatch_semaphore_wait(sema2, DISPATCH_TIME_FOREVER);
                    }
                    dispatch_semaphore_signal(sema);
                });
                
            }];
            dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
        }
        NSLog(@"结束");
    });

你可能感兴趣的:(iOS For循环执行AFNetworking请求)