FuturePromise,适用于iOS的Swift承诺实现,移植自苹果自家的SwiftNIO项目
简介
2018年3月,苹果发布并开源了其SwiftNIO项目,苹果自己表示该项目是
"一个跨平台异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端"
虽然这个框架主要是针对(Linux)服务器上的Swift,但我注意到它包含一个Future
和Promise
的实现。SwiftNIO(NIO = “非阻塞输入输出”)及其承诺实现基于事件循环进行并发,但将其移植到使用DispatchQueue
来代替是直截了当的。
这个GitHub仓库就是那个努力的成果。
目标
该项目的目标是维护一个与SwiftNIO的Future
和Promise
实现兼容的端口,用于iOS(和macOS)项目,直到Swift拥有更好的并发形式,例如协程或async await
。
在此期间,SwiftNIO的承诺实现可以被认为是苹果在苹果平台上认可的第一且唯一的一种众所周知的并发模式。
安装
CocoaPods
在您的 Podfile
中添加以下内容,然后运行 pod install
pod 'FuturePromise'
Carthage
在您的 Cartfile
中添加以下内容,然后运行 carthage update
github "jarrroo/FuturePromise"
文档
生成的文档页面可在 此处 找到。
用法示例
来自 Apple 的 SwiftNIO 文档
doWork().then {
doMoreWork($0)
}.then {
doYetMoreWork($0)
}.thenIfError {
maybeRecoverFromError($0)
}.map {
transformData($0)
}.cascade(promise: userPromise)