Future 0.0.3

Future 0.0.3

测试测试过
语言 SwiftSwift
许可证 MIT
发布最后发布2015年6月
SPM支持SPM

nghialv 维护。



Future 0.0.3

Future

提供 Future<T, Error> 的 Swift 微框架。

这个库灵感来源于2015年SwiftSubmit2015大会上 Javier Soto 的演讲和 Scala 中的 Future 实现。

此库使用 antitypical/Result

为什么我们需要 Future?

传统的异步代码
 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
    }
 }
使用 Future 的代码
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

要求

  • Swift 1.2 (Xcode 6.3 或更高)
  • iOS 8.0 或更高