iOS极客修移动端技术分享

iOS开发 合并网络请求接口

2019-01-02  本文已影响5人  嫌疑人zx

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

我现在手上的项目首页需要请求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);
    }];
}
上一篇 下一篇

猜你喜欢

热点阅读