多个网络请求异步请求处理

2019-04-10  本文已影响0人  super_2e20
参考案例
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

NSURLSession *session = [NSURLSession sharedSession];

dispatch_queue_t dispatchQueue = dispatch_queue_create("test.queue", DISPATCH_QUEUE_CONCURRENT);
dispatch_group_t dispatchGroup = dispatch_group_create();
// dispatch_group_async(dispatchGroup, dispatchQueue, ^(){

dispatch_group_enter(dispatchGroup);

NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.baidu.com"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    NSLog(@"got data from internet1");
    
    dispatch_group_leave(dispatchGroup);
}];
[task resume];

//  });
//  dispatch_group_async(dispatchGroup, dispatchQueue, ^(){
dispatch_group_enter(dispatchGroup);

NSURLSessionDataTask *task2 = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.baidu.com"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    NSLog(@"got data from internet2");
    
    dispatch_group_leave(dispatchGroup);
}];
[task2 resume];
// });

dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^(){
    NSLog(@"end");
});
}

自己实例

 dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue =  dispatch_queue_create("queue", NULL);
dispatch_group_enter(group);
WS(weakSelf);
dispatch_async(queue, ^{
    [weakSelf requestRecommandGroup:group];
    
});
dispatch_group_enter(group);
dispatch_async(queue, ^{
    [weakSelf requestProductListGroup:group];
});
dispatch_group_enter(group);
dispatch_async(queue, ^{
    [weakSelf requestBannerGroup:group];
});
 //    if (!isRefresh) {
 //        dispatch_group_enter(group);
//        dispatch_async(queue, ^{
//            [weakSelf requestActivityDrawGroup:group];
 //        });
//    }

dispatch_group_notify(group, queue, ^{
   
        dispatch_async(dispatch_get_main_queue(), ^{
             if ([weakSelf.ativityModel.imageType isEqualToString:@"1"]&&isRefresh ==NO) {
            [_activityView showActivityDrawView];
                 
             }
            [weakSelf hideActivity];
        });


});
上一篇下一篇

猜你喜欢

热点阅读