Skip to content

Instantly share code, notes, and snippets.

@trilliwon
Created June 15, 2020 09:59
Show Gist options
  • Save trilliwon/6dc647f1bfa2c8a976b2ef29b9b3ea7e to your computer and use it in GitHub Desktop.
Save trilliwon/6dc647f1bfa2c8a976b2ef29b9b3ea7e to your computer and use it in GitHub Desktop.
Synchronouse Request URLSession DataTask
extension URLSession {
func syncDataTask(with request: URLRequest) -> (Data?, URLResponse?, Error?) {
var data: Data?
var response: URLResponse?
var error: Error?
let semaphore = DispatchSemaphore(value: .zero)
let task = dataTask(with: request) {
data = $0
response = $1
error = $2
semaphore.signal()
}
task.resume()
semaphore.wait()
return (data, response, error)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment