Skip to content

Instantly share code, notes, and snippets.

@Bosn
Created May 18, 2020 04:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Bosn/6426c6a4e6ba86f008a29100a26987c9 to your computer and use it in GitHub Desktop.
Save Bosn/6426c6a4e6ba86f008a29100a26987c9 to your computer and use it in GitHub Desktop.
import Foundation
enum BoError: Error {
case CommonError
}
func fetchWorker() -> Result<Int, BoError> {
var result: Result<Int, BoError>!
let semaphore = DispatchSemaphore(value: 0)
URLSession.shared.dataTask(with: URL(string: "https://actin.tech/worker")!) { data, response, error in
guard let data = data else {
result = .failure(.CommonError)
return
}
let dataStr = String(data: data, encoding: .utf8)!
let val = Int(dataStr) ?? 0
result = .success(val)
semaphore.signal()
}.resume()
_ = semaphore.wait(wallTimeout: .distantFuture)
return result
}
func fetchLoginInfo() -> Result<String, BoError> {
var result: Result<String, BoError>!
let semaphore = DispatchSemaphore(value: 0)
URLSession.shared.dataTask(with: URL(string: "https://actin.tech/fetchLoginInfo")!) { data, response, error in
guard let data = data else {
result = .failure(.CommonError)
return
}
let dataStr = String(data: data, encoding: .utf8)!
result = .success(dataStr)
semaphore.signal()
}.resume()
_ = semaphore.wait(wallTimeout: .distantFuture)
return result
}
func mainEntry() {
print(1)
let workerResult = fetchWorker()
print(workerResult)
print(2)
let loginInfoResult = fetchLoginInfo()
print(loginInfoResult)
print(3)
}
mainEntry()
print("finished")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment