如何确定所有的异步请求都完成

有a、b、c、d 4个异步请求,如何判断a、b、c、d都完成执行?如果需要a、b、c、d顺序执行,该如何实现?
对于这四个异步请求,要判断都执行完成最简单的方式就是通过GCD的group来实现:


      
 
        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
       
 
        dispatch_group_t group = dispatch_group_create();
       
 
        dispatch_group_async(group, queue, ^{ 
        /*任务a */ 
        });
       
 
        dispatch_group_async(group, queue, ^{ 
        /*任务b */ 
        });
       
 
        dispatch_group_async(group, queue, ^{ 
        /*任务c */ 
        }); 
       
 
        dispatch_group_async(group, queue, ^{ 
        /*任务d */ 
        }); 
       
 
        dispatch_group_notify(group,dispatch_get_main_queue(), ^{ 
        // 在a、b、c、d异步执行完成后,会回调这里});
       
当然,我们还可以使用非常老套的方法来处理,通过四个变量来标识a、b、c、d四个任务是否完成,然后在runloop中让其等待,当完成时才退出runloop。但是这样做会让后面的代码得不到执行,直到Run loop执行完毕。

解释:要求顺序执行,那么可以将任务放到串行队列中,自然就是按顺序来异步执行了。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值