在swift中处理多个并行异步请求中的进度HUD的最佳方法

时间:2016-03-29 03:07:34

标签: ios swift

我在swift中向REST api发出多个并行异步请求,我正在使用MBProgressHUD来显示微调器当前我使用变量来控制多个请求但是想知道最好的设计模式来处理多个异步请求中的微调器

1 个答案:

答案 0 :(得分:0)

保留API的数量。在它们各自的完成块中,将该计数递减1.在每个完成块中检查计数。当计数达到0时删除微调器。

修改1 :您可以使用dispatch_group_asyncdispatch_group_notify。创建dispatch_group_asyncdispatch_group_notify请求组将在所有请求完成后通知您。用它来隐藏微调器/活动指示器。

编辑2 :感谢@brandonscript指出这一点。  Dispatch组可用作:

let dispatchGroup = dispatch_group_create()
    let dispatchQueue = dispatch_queue_create("com.test.proj", DISPATCH_QUEUE_CONCURRENT)

    dispatch_group_async(dispatchGroup, dispatchQueue, {
         print("In thread 1")
    })

    dispatch_group_async(dispatchGroup, dispatchQueue, {
        print("In thread 2")
    })

    dispatch_group_notify(dispatchGroup, dispatchQueue, {
        print("Dispatch group execution complete")
    })

控制台输出:在主题1中

在主题2中

调度通知完成