Handling cancellation and timeouts in Swift can be achieved using various mechanisms, such as the `URLSession` for network requests or using `DispatchWorkItem` for tasks. Below is a simple example of how to manage these scenarios effectively.
// Example of handling cancellation and timeout
let url = URL(string: "https://example.com/api")!
var task: URLSessionDataTask?
func fetchData() {
let session = URLSession.shared
let request = URLRequest(url: url, timeoutInterval: 5.0) // Timeout after 5 seconds
task = session.dataTask(with: request) { data, response, error in
if let error = error {
print("Error occurred: \(error.localizedDescription)")
} else if let data = data {
print("Data received: \(data)")
}
}
task?.resume()
}
func cancelFetch() {
task?.cancel() // Cancel the ongoing task
print("Fetch cancelled")
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?