美文网首页
在异步中按顺序发起网络请求,并保证返回顺序一致

在异步中按顺序发起网络请求,并保证返回顺序一致

作者: 天马行空得想法 | 来源:发表于2018-08-25 11:10 被阅读159次

    在iOS开发当中我们有时候会碰到这样一个需求场景.例如有三个网络请求A,B,C.C这个网络请求需要等待A,B网络请求执行完并返回数据并拿着A,B两个网络请求的返回数据作为参数发起C的网络请求。小伙伴们一想到这个肯定是想着用dispatch_group_async()组函数。但是这样有个问题来了,发送网络请求是用的AFN发送的,是在block中获取数据。这样如何能保证A,B两个网络请求都接受到了数据才发起C的网络请求了。有个方法成功解决了这个问题。dispatch_group_enter(group)和dispatch_group_leave(group)方法,废话不多说上代码:

    dispatch_group_t group = dispatch_group_create();
    dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0);

    dispatch_group_enter(group);
    dispatch_group_async(group, globalQueue, ^{
       [self checkLogin:^{
           // 网络请求A
          dispatch_group_leave(group);
        }];
    });
    dispatch_group_enter(group);
    dispatch_group_async(group, globalQueue, ^{
       [self checkLogin:^{
            // 网络请求B
            dispatch_group_leave(group);
        }];
    });
    dispatch_group_enter(group);
    dispatch_group_async(group, globalQueue, ^{
       [self checkLogin:^{
            // 网络请求C
            dispatch_group_leave(group);
        }];
    });
    

    ok成功解决异步当中还有异步的问题,完美解决数据返回的顺序问题。

    相关文章

      网友评论

          本文标题:在异步中按顺序发起网络请求,并保证返回顺序一致

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