class a {
b().download ({ data in
})
}
class b{
func download (downloadedData: @escaping (_ data: Data? ) -> Void ) {
c().download()
}
}
class c {
func download () -> Data {
let semaphore = DispatchSemaphore(value: 0)
NetworkManager().downloadRequest: { (result: Result<Data, Error>) in
switch result {
case .success(let success)
......
case .failure(let error):
.....
}
semaphore.signal()
}
)
semaphore.wait()
return data
}
}
Class a initiates the download and class c interacts with network manager to download the data. Class c issues semaphore wait as soon as it sends request to download the data and issues signal when download completes. Is there a way to issue signal from class a when download is in progress. Basically class a should be able to skip wait by issuing signal command