美文网首页
Swift5.5 使用async await

Swift5.5 使用async await

作者: Sunooo | 来源:发表于2022-06-12 10:46 被阅读0次

    新旧方法对比

    Swift 5.5添加了async await 用于支持异步编程,使用起来确实比之前方便多了。新的方法系统版本最低要求是iOS 15.

        // 使用闭包
        func mockRequest(_ request: URLRequest, complete: @escaping (User?) -> Void) {
            URLSession.shared.dataTask(with: request) { data, _, _ in
                guard let data = data else { return }
                do {
                    let user = try JSONDecoder().decode(User.self, from: data)
                    complete(user)
                } catch {
                    print(error)
                    complete(nil)
                }
            }.resume()
        }
    
        // 使用async await
        func mockRequest(_ request: URLRequest) async -> User? {
            do {
                let (data, _) = try await URLSession.shared.data(for: request)
                let user = try JSONDecoder().decode(User.self, from: data)
                return user
            } catch {
                print(error)
                return nil
            }
        }
    

    在同步方法内调用async方法的时候,需要使用Task,在同为async方法内可以直接调用.

            Task {
                let user = await mockRequest(request)
                print(user)
            }
    

    流行的网络框架Alamofire就是使用的之前的API编写的

    发现一个使用async await actor编写的新的框架Get,试用了一下,感觉不错 👍

    Get可以有效的减少代码量

    github仓库地址 https://github.com/SunZhiC/UseAsync-Await-Actor

    References

    https://kean.blog/post/new-api-client

    相关文章

      网友评论

          本文标题:Swift5.5 使用async await

          本文链接:https://www.haomeiwen.com/subject/ihegmrtx.html