dispatch_group项目中使用
2016-10-12 15:04
260 查看
需求很简单,用AFN多个请求同时进行,所有请求完成后处理数据源,直接上代码,(JJNetworkTool封装的AFN网络请求工具)
dispatch_group_enter(group);和 dispatch_group_leave(group);要配对使用
所有请求完成后通知 dispatch_group_notify
#pragma mark - 多个请求
- (void)requestData {
[SVProgressHUD showWithStatus:@"请稍等..."];
dispatch_group_t group = dispatch_group_create();
dispatch_group_enter(group);
// 请求一
[JJNetworkTool POST:kGiftList parameters:nil success:^(id _Nonnull result) {
// 处理请求成功
dispatch_group_leave(group);
} failure:^(id _Nonnull result) {
// 处理请求失败
dispatch_group_leave(group);
} showProgressHUD:NO];
// 请求二,这里可能有多个请求,原理都一样
for (ShoppingCartModel *model in self.newspapers) {
if ([model.giftCount intValue] > 0) { // 有赠品
dispatch_group_enter(group);
NSDictionary *parameters = @{@"waresId" : model.waresId};
[JJNetworkTool POST:kGiftListByWaresId parameters:parameters success:^(id _Nonnull result) {
dispatch_group_leave(group);
} failure:^(id _Nonnull result) {
dispatch_group_leave(group);
} showProgressHUD:NO];
}
}
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
// 所有请求完成后操作
});
}
dispatch_group_enter(group);和 dispatch_group_leave(group);要配对使用
所有请求完成后通知 dispatch_group_notify
#pragma mark - 多个请求
- (void)requestData {
[SVProgressHUD showWithStatus:@"请稍等..."];
dispatch_group_t group = dispatch_group_create();
dispatch_group_enter(group);
// 请求一
[JJNetworkTool POST:kGiftList parameters:nil success:^(id _Nonnull result) {
// 处理请求成功
dispatch_group_leave(group);
} failure:^(id _Nonnull result) {
// 处理请求失败
dispatch_group_leave(group);
} showProgressHUD:NO];
// 请求二,这里可能有多个请求,原理都一样
for (ShoppingCartModel *model in self.newspapers) {
if ([model.giftCount intValue] > 0) { // 有赠品
dispatch_group_enter(group);
NSDictionary *parameters = @{@"waresId" : model.waresId};
[JJNetworkTool POST:kGiftListByWaresId parameters:parameters success:^(id _Nonnull result) {
dispatch_group_leave(group);
} failure:^(id _Nonnull result) {
dispatch_group_leave(group);
} showProgressHUD:NO];
}
}
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
// 所有请求完成后操作
});
}
相关文章推荐
- ios使用dispatch_group_async和dispatch_group_notify异步转同步
- Dispatch Group的使用
- iOS--GCD(使用dispatch_group来进行线程同步)
- dispatch_group的实际使用案例,监听多任务
- dispatch_group的实际使用案例,监听多任务
- dispatch_group_async 使用详解
- dispatch_group的实际使用案例,监听多任务
- 使用dispatch_group来进行线程同步
- Swift3.0 /Swift2.3——dispatch_group的使用
- dispatch_group的实际使用案例,监听多任务
- Dispatch Group的使用
- dispatch_group_t使用
- iOS dispatch_group_enter的使用
- dispatch_group_t 日常使用注意事项
- iOS多线程GCD深入之Dispatch Group使用
- 记录dispatch_group_enter()和dispatch_group_leave()的使用
- iOS dispatch_group的使用
- Swift3.0 / swift2.3中dispatch_group的使用
- iOS GCD之dispatch_group的使用(多个文件并发上传)
- dispatch_group的实际使用案例,监听多任务