讲故事:
?♀️:待我长发及腰你娶我可好
?:I Promise You
?♀️:
PromiseKit是一个简易的异步框架,让你更加自如的将精力集中去处理更加重要的事情上。PromiseKit是一个更加易学,更加容易掌控并且结果思路更加清晰,更代码易读的优雅框架
Promises simplify asynchronous programming, freeing you up to focus on the more
important things. They are easy to learn, easy to master and result in clearer,
more readable code.
基本概念
firstly:初始化一个Promise
firstly {
Promise.value(1)
}
done
when:几个Promise何时完成,返回结果, 效果就是.barrier
when(resolved: Promise.value(1),Promise.value(2)).done { (results:[Result<Int>]) in
}
then:是响应链的串联节点
firstly{
Promise.value(1)
}.then { (a:Int) -> Promise<Int> in
return Promise.value(a*2)
}.done { (va:Int) in
print(va)
}
race:比赛之意只要有一个实现即代表完成,与```when```形成对应
race(p1,p2).done{ _ in
}
有人总结的好(大意):
PromiseKit将我们从OC Swift中的多层级的```callBack```方式中拯救出来,是整个过程更加层级化,代码更易于读取。```但是```屏蔽了内部的实现细节和失去了代码的逻辑性
简单实战
我们使用Alamofire进行请求
按照 请求数据 =》 解析数据 =》绑定数据 =》完成登陆
我们看一下整体login的
@IBAction func login(_ sender: Any) {
firstly{
login()
}.then { (json:Any) -> Promise<Void> in
return self.bindToText(json: json)
}.done { _ in
print("finish")
}
}
按照上面我们可以省去大量的block回调,是思路更加清晰:
请求登录 =》 绑定到UI =》 完成
整体流程按照链式一气呵成
然后让我们看看整体