美文网首页
多个网络请求异步请求处理

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

作者: super_2e20 | 来源:发表于2019-04-10 17:32 被阅读0次
    参考案例
    - (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];
            });
    
    
    });
    

    相关文章

      网友评论

          本文标题:多个网络请求异步请求处理

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