GroupWork 是一个易于使用的 Swift 框架,它可以帮助你以一种清晰和有组织的方式编排你的并发、异步函数。这有助于使包含多个异步任务的大型函数更清晰易懂。
对于 CocoaPods,添加到 Podfile
pod 'GroupWork', '~> 0.0'
对于 Carthage,添加到 Cartfile
github "quanvo87/GroupWork"
对于 SPM,添加到你的包依赖项
.package(url: "https://github.com/quanvo87/GroupWork.git", .upToNextMinor(from: "0.0.0"))
GroupWork.swift 拖到项目树中GroupWork.xcodeprojimport GroupWork
...
func complexFunc(completion: @escaping (Bool) -> Void) {
let work = GroupWork()
work.asyncFuncA()
work.asyncFuncB()
work.asyncFuncC()
work.allDone() {
completion(work.result)
}
}
...
complexFunc 是一个函数,它返回三个异步函数 asyncFuncA()、asyncFuncB() 和 asyncFuncC() 并发运行的结果。只有当所有这些函数都完成后,才会调用完成处理程序。使用此库实现了上述简洁的接口。这可以扩展到远高于三个异步函数。
注意
work.result 只是一个简单的 Bool为了从上面创建 complexFunc(),需要进行一些设置
import GroupWork
extension GroupWork {
func asyncFuncA() {
start()
networkCallA() { (result) in
self.finish(withResult: result)
}
}
func asyncFuncB() {
start()
networkCallB() { (result) in
self.finish(withResult: result)
}
}
func asyncFuncC() {
start()
networkCallC() { (result) in
self.finish(withResult: result)
}
}
}
现在你可以创建一个 GroupWork,并在其上调用 work.simpleFuncA(),就像示例中一样。
注意
start() 必须在异步任务之前调用finish() 必须在异步任务的完成处理程序中调用start() 和 finish() 调用必须是平衡的测试 中有一个工作示例。
请提供署名,这将非常感谢。