运行顺序异步任务的快捷简便方式。
构建 Tunsgten 项目的集成测试套件时,产生了对 Errands 的需求。通常,这些测试包含多个顺序操作,其中每个步骤都依赖于前一个步骤的结果。然而,测试用例并非 Errands 唯一的使用场景。
注意:Errands 和 PromisKit 在功能上有相似之处。Errands 更加注重快速创建自定义操作,但功能不如 PromisKit 强大。
运行您的第一个 Errands 序列就像下面这样简单
Errands().first { (done: @escaping DoneClosure<Void>) in
print("begin")
done(())
}.then { (_, done: @escaping DoneClosure<Void>) in
print("step")
done()
}.finally {
print("done")
}
Errands 的真正价值在于可以轻松地在各个步骤之间传递信息。以下示例登录用户并加载她的联系人。
Errands().first { (done: @escaping DoneClosure<User>) in
api.login(credentials) { user
done(user)
}
}.then { (loggedInUser, done: @escaping DoneClosure<[Contact]]>) in
api.loadContacts(loggedInUser) { contacts in
done(contacts)
}
}.finally { contacts in
print("User contacts: \(contacts).")
}
要使用 Cocoapods 集成 Errands,请在您的 Podfile
中将其指定为依赖项
platform :ios, '8.0'
use_frameworks!
target '<Your Target Name>' do
pod 'Errands'
end
然后,运行以下命令进行安装
$ pod install
要使用 Carthage 集成 Errands,请在您的 Cartfile
中将其指定为依赖项
github "lukewar/Errands" ~> 0.1.0
运行 carthage update 来构建框架,并将构建好的 Errands.framework 拖到您的 Xcode 项目中。
要使用 Swift Package Manager 集成 Errands,请在您的 Package.swift
中将其指定为依赖项
dependencies: [
.package(url: "https://github.com/lukewar/Errands.git", .upToNextMinor(from: "0.1.0"))
]
请针对当前开发分支提交 Pull Request。
The MIT License (MIT)
Copyright (c) 2018 Lukasz Warchol
特此授权,免费授予获得本软件及相关文档文件(“软件”)副本的任何人,不受限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件的权利,并允许向其提供本软件的人员这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在所有副本或大部分软件中。
本软件按“原样”提供,不含任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有者均不对任何索赔、损害或其他责任负责,无论是在合同、侵权行为或其他方面,由本软件或本软件的使用或其他处理引起的,与之相关的或与之相关的。