GCD group在多个网络请求的响应之前就已经执行

使用GCD进行多文件下载时,我们可以很方便的使用dispatch_group进行管理。但是碰到网络请求都发出去了,想等到他们都响应,在执行下一步操作,有时候会惊奇的发现dispatch_group_notify()竟然在网络相应之前就已经“干净利落”的完成了,不是我们想要的。不要急,因为你的思路跑偏了,换个方向,用

dispatch_group_enter(group);//放入group

dispatch_group_async(,^{

    //执行的任务

});

dispatch_group_leave(group);//离开group


就像这样一个结构,将一个一个的“请求+响应”作为一个整体,压入group里,


//这里无非就是创建组group

dispatch_group_enter(group);

[BNNetTools post:url params:parma success:^(id json) {

    //完成操作。。。

    dispatch_group_leave(group);

 } failure:^(NSError *error) {

    //完成操作。。。

    dispatch_group_leave(group);

}];

//也可以这样写

dispatch_group_enter(group);

[BNNetTools post:url params:parma success:^(id json) {

    //完成操作。。。

    

 } failure:^(NSError *error) {

    //完成操作。。。

    

}];

dispatch_group_leave(group);

//或者这样写

dispatch_group_enter(group);//放入group

dispatch_group_async(,^{

    //执行的任务

    

    [BNNetTools post:url params:parma success:^(id json) {

        //完成操作。。。

        dispatch_async(dispatch_get_main_queue(), ^{

            //刷新UI

        });

     } failure:^(NSError *error) {

        //完成操作。。。

        

        dispatch_async(dispatch_get_main_queue(), ^{

            //刷新UI

        });


    }];


});

dispatch_group_leave(group);//离开group

最后,别忘了,你要的获得他们都结束————dispatch_group_notify();

转载于:https://my.oschina.net/u/1583729/blog/604409

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值