GCD解决多个网络请求同时处理请求结果

在开发中,我们经常遇到一个页面要请求多个接口,有时又必须多个请求都返回结果之后来统一处理业务逻辑,看很多开发者都是在请求结果中调用一个公用的方法来判断是否所有请求都已经完成。其实使用GCD可以完美解决此类需求。

//代码如下
dispatch_group_t group = dispatch_group_create();
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        for (int i = 0; i < 2; i ++) {
            dispatch_group_enter(group);
            switch (i) {
                case 0:
                {
                    //网络请求
                    [self getProductDetailsSuccess:^(BOOL success){
                        //回调执行
                        dispatch_group_leave(group);
                    }];
                    
                }
                    break;
                case 1:
                {
                    //网络请求
                    [self getProductEvaluateSuccess:^(BOOL success) {
                        //回调执行
                        dispatch_group_leave(group);
                    }];
                }
                    break;
                    
                default:
                    break;
            }
        }
        //线程等待
        dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
        dispatch_async(dispatch_get_main_queue(), ^{
            //请求完毕,处理业务逻辑
        });
    });

你可能感兴趣的:(GCD解决多个网络请求同时处理请求结果)