iOS 使用dispatch_group_enter使多次网络请求依次执行

1.用到的几个方法

dispatch_group_enter :通知 group,下个任务要放入 group 中执行了

dispatch_group_leave: 通知 group,任务成功完成,要移除,与 enter成对出现

dispatch_group_wait: 在任务组完成时调用,或者任务组超时是调用(完成指的是enter和leave次数一样多)

dispatch_group_notify: 只要任务全部完成了,就会在最后调用

//2、开启子线程的线程组

//一个线程组

    dispatch_group_t groupE = dispatch_group_create();

        //模拟网络请求1

        dispatch_group_enter(groupE);

        NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];

//普通的afn 请求        

[HttpHelperClient postReqeustWithURL:@"www.baidu.com"params:dicsuccessBlock:^(NSDictionary*returnDataDic) {

            NSLog(@"接口11请求完成");

            dispatch_group_leave(groupE);

        }failureBlock:^(NSError*error) {

        }showHUD:NO getOrPost:2];

        //模拟网络请求2

        dispatch_group_enter(groupE);

        NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];

        [HttpHelperClientpostReqeustWithURL:@"www.baidu.com"params:dicsuccessBlock:^(NSDictionary*returnDataDic) {

            NSLog(@"接口12请求完成");

            dispatch_group_leave(groupE);

        }failureBlock:^(NSError*error) {

        }showHUD:NO getOrPost:2];

        //模拟网络请求3

        dispatch_group_enter(groupE);

        NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];

        [HttpHelperClientpostReqeustWithURL:@"www.baidu.com"params:dicsuccessBlock:^(NSDictionary*returnDataDic) {

            NSLog(@"接口13请求完成");

            dispatch_group_leave(groupE);

        }failureBlock:^(NSError*error) {

        }showHUD:NO getOrPost:2];

    //所有请求都成功以后刷新页面

    dispatch_group_notify(groupE, dispatch_get_main_queue(), ^{

        NSLog(@"接口全部请求完成");//刷新页面

    });

你可能感兴趣的:(iOS 使用dispatch_group_enter使多次网络请求依次执行)