美文网首页
关于AFNetworking多次网络请求后进行的操作

关于AFNetworking多次网络请求后进行的操作

作者: 雪_晟 | 来源:发表于2017-05-31 13:57 被阅读336次

    需求:同时进行两次网络请求,网络请求是异步的,在网络请求成功后进行其它的操作。两个网络请求是这样,一个网络请求中block执行完之后,再进行其它操作,也是一样的原理,只是这时候不需要线程组了,只需要信号量。当然也适用于所有的block。

    接下来就说下,在两次异步请求之后要做的操作。

    利用线程组和信号量来完成,看代码

     
        dispatch_group_t group = dispatch_group_create();
        
        dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
            // 创建信号量
            dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
            [LBHTTPTool get:urlOne params:nil success:^(id responseObject) {
                // 请求成功发送信号量(+1)
                NSLog(@"第一个");
                            dispatch_semaphore_signal(semaphore);
            } failure:^(NSError *error) {
    //             无论请求成功或失败都发送信号量(+1)
                            dispatch_semaphore_signal(semaphore);
            }];
    
            
            // 在请求成功之前等待信号量(-1)
            dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
        });
        
        dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            
            // 创建信号量
            dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
            [LBHTTPTool get:urlTwo params:nil success:^(id responseObject) {
                // 请求成功发送信号量(+1)
                NSLog(@"第二个");
                dispatch_semaphore_signal(semaphore);
            } failure:^(NSError *error) {
                //             无论请求成功或失败都发送信号量(+1)
                dispatch_semaphore_signal(semaphore);
            }];
            
            
            // 在请求成功之前等待信号量(-1)
            dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
        });
        
        // 请求完成之后
        dispatch_group_notify(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            NSLog(@"最终");
        });
    
    

    结果:

    QQ20170531-135647.png

    相关文章

      网友评论

          本文标题:关于AFNetworking多次网络请求后进行的操作

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