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(@"接口全部请求完成");//刷新页面

    });

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容