简单粗暴的处理多个网络请求后合并处理

2018-04-14  本文已影响0人  大乐乐12

OC版

    dispatch_group_t group = dispatch_group_create(); //创建一个组

    dispatch_group_enter(group);  //启动一个锁
    dispatch_group_enter(group);  //启动两个锁   (需要几个写几个)
    
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{ // 等待完成通知 所有的锁leave之后调用这里
        
        NSLog(@"所有请求都完成了,爱干啥干啥");
    });

    [BMCLHttpManager httpDownloadWithUrl:kURL1 progress:nil successful:^(NSURL *filePath) {  //第一个请求
        
        dispatch_group_leave(group);  //第一个请求完成 退出锁
        
    } error:nil];
    
    [BMCLHttpManager httpDownloadWithUrl:kURL2 progress:nil successful:^(NSURL *filePath) {  //第二个请求
        
        dispatch_group_leave(group); //第儿个请求完成 退出锁

    } error:nil];

swift版

        let group = DispatchGroup() //创建一个组
        
        group.enter()   //启动一个锁
        group.enter()   //启动两个锁   (需要几个写几个)
        
        group.notify(queue: DispatchQueue.main) { // 等待完成通知 所有的锁leave之后调用这里
            print("所有请求都完成了,爱干啥干啥")
        }
        
        netWork { (res) in      //第一个请求 (伪代码)
            
            group.leave()       //第一个请求完成 退出锁
        }
        
        netWork { (res) in      //第二个请求 (伪代码)
            
            group.leave()       //第儿个请求完成 退出锁
        }

注意: enter 和 leave 是要成对出现的

上一篇下一篇

猜你喜欢

热点阅读