很多異步任務(wù)導(dǎo)致閉包嵌套鹿榜,陷入回調(diào)地獄。PromiseKit正是為了解決這個(gè)問題锦爵,筆者初次嘗試之后發(fā)現(xiàn)代碼確實(shí)簡潔了不少,代碼也更加易讀奥裸。
集成
pod 'PromiseKit/CorePromise'
基本使用
/// examples
private func request() -> Promise<Any> {
return Promise(resolver: { (resolver) in
Alamofire.request("https://www.example.com/").responseJSON(completionHandler: { (response) in
switch response.result {
case .success(let dict):
resolver.fulfill(dict)
case .failure(let err):
resolver.reject(err)
}
})
})
}
private func twoRequest() -> Promise<Void> {
return firstly {
// 第一次請求
request()
}.then{ (v) -> Promise<Any> in
// 完成第一次請求之后請求第二次
return self.request()
}.done { (v) in
print("done")
}
}
更多
- resolver.fulfill表示成功(success)险掀,resolver.reject(err)表示失敗(fail),resolver.resolve表示完成(complete)
-
上面的代碼沒有weak self湾宙,很多同學(xué)會(huì)有疑問:這樣會(huì)不會(huì)產(chǎn)生循環(huán)引用呢樟氢?下面是開發(fā)者的回復(fù)
簡單來說基本不用擔(dān)心
- 更多使用大家可以參見PromiseKit-Github