派遣集团不为完工块工作

时间:2018-01-18 14:09:42

标签: ios swift concurrency grand-central-dispatch

尝试从网络调用中获取返回回复对象。该会话是使用星形尖叫API的类。我似乎无法让这个工作。它只打印出一组来自第一个id的结果。我在这里缺少什么?

let myGroup = DispatchGroup()

for i in 0 ..< marketIds.count {
    myGroup.enter()
    self.session.retrieve(withMethod: MarketKeys.key, withParameters: [MarketKeys.id: marketIds[i]], completion: { (results, error) in
        print("results \n")
        print(results!)
        myGroup.leave()
        })
    }
myGroup.notify(queue:.main) {
print("Done")
}

2 个答案:

答案 0 :(得分:0)

添加此内容,以便发送组通知

 myGroup.notify(queue: .main) {
   print("Both functions complete ")
  }

答案 1 :(得分:0)

article为您提供了简单DispatchGroup使用的快速参考指南。

一个例子:

let dispatchGroup = DispatchGroup()

dispatchGroup.enter()
longRunningFunction { dispatchGroup.leave() }

dispatchGroup.enter()
longRunningFunctionTwo { dispatchGroup.leave() }

dispatchGroup.notify(queue: .main) {
    print("Both functions complete ")
}

当处理队列中的所有项目并且允许您相应地对此做出反应时,将调用notify函数。所以上面的例子将运行两个长时间运行的任务,然后输出“两个函数完成”