美文网首页
问题:有a、b、c、d 4个异步请求,如何判断a、b、c、d都完

问题:有a、b、c、d 4个异步请求,如何判断a、b、c、d都完

作者: 姜小舟 | 来源:发表于2020-05-18 15:07 被阅读0次

对于这四个异步请求,要判断都执行完成

  • 老套的方法来处理,通过四个变量来标识a、b、c、d四个任务是否完成,然后在runloop中让其等待,当完成时才退出runloop。但是这样做会让后面的代码得不到执行,直到Run loop执行完毕。
  • 对于这四个异步请求,要判断都执行完成最简单的方式就是通过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异步执行完成后,会回调这里
});

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

dispatch_queue_t queue = dispatch_queue_create("...", DISPATCH_QUEUE_SERIAL);

相关文章

网友评论

      本文标题:问题:有a、b、c、d 4个异步请求,如何判断a、b、c、d都完

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