ios - 调度组不为完成 block 工作

标签 ios swift concurrency grand-central-dispatch

尝试从网络调用中获取返回回复对象。该 session 是一个使用 star scream 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")
}

最佳答案

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

一个例子:

let dispatchGroup = DispatchGroup()

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

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

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

通知函数在队列中的所有项目都已处理后被调用,并允许您对此做出相应的 react 。所以上面的例子会运行两个长时间运行的任务,然后会输出“两个函数都完成了👍”

关于ios - 调度组不为完成 block 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48323247/

相关文章:

iphone - 使用 UIGradientLayer 作为 layer.mask 淡出 ScrollView 的底部/顶部 --> 掩码的重新定位滞后

iOS 应用程序通知角标(Badge)计数未重置为 0

java - 有关Java死锁情况的问题

multithreading - 从Dart中的多个异步流修改对象

objective-c - 单击按钮时更改 View ,但仅当文本字段 = 密码时

ios - 如何在 CocoaPod PodSpec 中创建 Ruby 字符串?

swift - xcode 7 swift 如何使容器 View 透明

ios - 在 IOS 上使用 AudioKit 将声音文件作为 MIDI 音符发送

ios - 如何使用 swinject 正确注入(inject)依赖项

java - 如何在Java中设置Fork/Join算法的阈值?