提供 Future<T, Error> 的 Swift 微框架。
这个库灵感来源于2015年SwiftSubmit2015大会上 Javier Soto 的演讲和 Scala 中的 Future
实现。
此库使用 antitypical/Result
。
func requestRepository(repoId: Int64, completion: (Repository?, NSError?) -> Void) {}
func requestUser(userId: Int64, completion: (User?, NSError?) -> Void) {}
// get owner info of a given repository
requestRepository(12345) { repo, error in
if let repo = repo {
requestUser(repo.ownerId) { user, error in
if let user = user {
// do something
} else {
// error handling
}
}
} else {
// error handling
}
}
let future = requestRepository(12345)
.map { $0.ownerId }
.flatMap(requestUser)
future.onCompleted { result in
switch result {
case .Success(let user): println(user)
case .Failure(let error): println(error)
}
}
通过使用操作符来简写
let future = requestRepository(12345) <^> { $0.ownerId } >>- requestUser
future.onCompleted { result in
switch result {
case .Success(let user): println(user)
case .Failure(let error): println(error)
}
}
map
<^>
flatMap
>>-
filter
andThen
recover
zip
flatten
使用 Carthage
- 将
github "nghialv/Future"
添加到您的 Cartfile 中- 运行
carthage update
使用 Cocoapods
- 在 Podfile 中添加
use_frameworks!
- 在 Podfile 中添加
pod "Future"
- 运行
pod install
使用 Submodule