Swift4 使用 PromiseKit 避免回调地狱

很多异步任务导致闭包嵌套,陷入回调地狱。PromiseKit正是为了解决这个问题,笔者初次尝试之后发现代码确实简洁了不少,代码也更加易读。

集成

pod 'PromiseKit/CorePromise'

基本使用

    /// examples
    private func request() -> Promise {
        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 {
        return firstly {
                // 第一次请求
                request()
            }.then{ (v) -> Promise in
                // 完成第一次请求之后请求第二次
                return self.request()
            }.done { (v) in
                print("done")
            }
    }

更多

  1. resolver.fulfill表示成功(success),resolver.reject(err)表示失败(fail),resolver.resolve表示完成(complete)
  2. 上面的代码没有weak self,很多同学会有疑问:这样会不会产生循环引用呢?下面是开发者的回复



    简单来说基本不用担心

  3. 更多使用大家可以参见PromiseKit-Github

你可能感兴趣的:(Swift4 使用 PromiseKit 避免回调地狱)