赞
踩
Swift 中的 Continuations 用于将同步代码转换为异步代码。我们现在可以将闭包转换为允许结构化并发的异步等待函数。在本文中,我将向您展示如何使用延续并讨论您可以使用的不同类型。有两种类型的延续:CheckedContinuation 和 UnsafeContinuation。
让我们从我们过去如何编写网络调用开始。下面是一个名为“getAllBreeds”的函数,它带有一个采用 Result 类型的转义闭包。
func getAllBreeds(completion: @escaping (Result<[Breed], Error>) -> Void) { let url = URL(string: Self.endpoint.appending("breeds/list/all"))! let urlRequest = URLRequest(url: url) URLSession.shared.dataTask(with: urlRequest) { data, response, error in if let err = error { completion(.failure(ServiceError.sessionError(err))) } guard let data = data else { completion(.failure(ServiceError.badData)) return } guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else { completion(.failure(ServiceError.badHTTPResponse)) return } let decoder = JSONDecoder() do { l
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。