Я бы хотел отменить все мои фоновые сетевые задачи, ТО затем выполнить процесс выхода из системы (очистить файлы cookie, сеанс, данные пользователя и т. Д.).В настоящее время я не уверен, как дождаться отмены всех сетевых вызовов, прежде чем делать что-то еще.
Использование: Alamofire 4.7.2, Swift 3, Xcode 9.3.1, Min iOS 9 +
Текущий код:
Alamofire.SessionManager.default.session.getAllTasks { (tasks) in
print("tasks to cancel: \(tasks.count)")
// cancel all network tasks
tasks.forEach {
$0.cancel()
print("canceling network task")
}
// ToDo need to wait for all tasks to be canceled first
doLogout()
}
Как и ожидалось, журналы читаются
tasks to cancel: 5
canceling network task
canceling network task
canceling network task
canceling network task
canceling network task
do logout
Making request Logout
POST : https://.../logout
GET : https://... back with error: Error Domain=NSURLErrorDomain Code=-999 "cancelled"...
GET : https://... back with error: Error Domain=NSURLErrorDomain Code=-999 "cancelled"...
GET : https://... back with error: Error Domain=NSURLErrorDomain Code=-999 "cancelled"...
GET : https://... back with error: Error Domain=NSURLErrorDomain Code=-999 "cancelled"...
GET : https://... back with error: Error Domain=NSURLErrorDomain Code=-999 "cancelled"...
...
Существует вероятность того, что мой процесс выхода из системы завершится успешно до того, как оставшиеся вызовы будут отменены, и может вызвать другие неавтоматические проблемы.Было бы здорово подождать, пока все будут отменены, а затем начать процесс выхода из системы.
Есть какие-либо мысли, кроме моей альтернативной идеи о добавлении уродливого таймера ожидания 3 сек? *