Slide 23
Slide 23 text
1. PoC実装
既存実装(Model)
func request(request: URLRequest, completionHandler: @escaping (Data?) -> ()) {
self.session.dataTask(with: request) { data, response, error in
// 色々な処理
completionHandler(data)
}.resume()
}
withCheckedThrowingContinuation で Cocurrency 関数を作成
func requestAsync(request: URLRequest) async throws -> Data? {
return try await withCheckedThrowingContinuation { continuation in
self.session.dataTask(with: request) { data, response, error in
if let error = error {
continuation.resume(throwing: self.handleNSURLError(error: error as NSError))
return
}
continuation.resume(returning: data)
}.resume()
}
}
@available(*, deprecated, message: "This function is deprecated. Use the requestAsync() instead.")
func request(request: URLRequest, completionHandler: @escaping (Data?) -> ()) {
self.session.dataTask(with: request) { data, response, error in
completionHandler(data)
}.resume()
}