美文网首页iOS极客修移动端技术分享
iOS开发 合并网络请求接口

iOS开发 合并网络请求接口

作者: 嫌疑人zx | 来源:发表于2019-01-02 17:45 被阅读5次

    合并网络请求接口很基础。但是我一直都没有重视这个东西,直到我发觉挨个接口请求刷新,其实拖慢了首页的请求速度。

    我现在手上的项目首页需要请求4个接口,用户进入首页后,会分别请求接口,接口挨个请求完成后,刷新tableView,并且取消下拉刷新的状态。

    网络请求是异步的,也就是说,4个网络请求是可以同时进行的,相比合并之后,请求时间理论上只需要之前的四分之一。

    代码实现:

    /**
     合并请求组合
     */
    - (void)getData{
        
        dispatch_group_t group = dispatch_group_create();
        
        // 加载通知列表
        dispatch_group_enter(group);
        [self getNotifyList:group];
        
        // 获取本月排行榜
        dispatch_group_enter(group);
        [self getRankList:group];
        
        // 获取订单状态
        dispatch_group_enter(group);
        [self getOrderNumData:group];
        
        // 获取服务指标的数据
        dispatch_group_enter(group);
        [self getServiceIndicators:group];
        
        dispatch_group_notify(group, dispatch_get_main_queue(), ^{
            [self.HomePageCollectionView reloadData];
            [self.HomePageCollectionView.mj_header endRefreshing];
        });
    }
    
    /**
     加载通知列表
     */
    - (void)getNotifyList:(dispatch_group_t)group{
        WEAKSELF
        [[JKXNetInterface startInterface] getNotifyListWithTask:^(NSURLSessionDataTask *NetTask) {
            
        } Withblock:^(BOOL isSuccessful, id result, NSString *error) {
            if(isSuccessful){
               //数据处理
            }
            dispatch_group_leave(group);
        }];
    }
    
    /**
     获取订单状态
     */
    - (void)getOrderNumData:(dispatch_group_t)group{
        WEAKSELF
        [[JKXNetInterface startInterface] getOrderNumWithTask:^(NSURLSessionDataTask *NetTask) {
            
        } Withblock:^(BOOL isSuccessful, id result, NSString *error) {
            
            if (isSuccessful) {
                //数据处理
            }
            
            dispatch_group_leave(group);
        }];
    }
    
    /**
     获取服务指标的数据
     */
    - (void)getServiceIndicators:(dispatch_group_t)group{
        WEAKSELF
        [[JKXNetInterface startInterface] getServiceIndexWithTask:^(NSURLSessionDataTask *NetTask) {
            
        } Withblock:^(BOOL isSuccessful, id result, NSString *error) {
            
            if(isSuccessful){
                //数据处理
            }
            
            dispatch_group_leave(group);
        }];
    }
    
    /**
     获取本月排行榜
     */
    - (void)getRankList:(dispatch_group_t)group{
        WEAKSELF
        [[JKXNetInterface startInterface] getRankListWithTask:^(NSURLSessionDataTask *NetTask) {
            
        } Withblock:^(BOOL isSuccessful, id result, NSString *error) {
            
            if (isSuccessful) {
                //数据处理
            }
            
            dispatch_group_leave(group);
        }];
    }
    

    相关文章

      网友评论

        本文标题:iOS开发 合并网络请求接口

        本文链接:https://www.haomeiwen.com/subject/itttrqtx.html