合并网络请求接口很基础。但是我一直都没有重视这个东西,直到我发觉挨个接口请求刷新,其实拖慢了首页的请求速度。
我现在手上的项目首页需要请求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);
}];
}