После получения JSON
данных из запроса Alamofire
я хочу проанализировать их в фоновом потоке, потому что процесс синтаксического анализа труден и имеет некоторую логику в моем случае.Первой идеей, которая была решена, было выполнение операции async
в фоновом потоке с синхронным запросом с Alamofire
.Но, как я прочитал, Alamofire
работает полностью асинхронно.Вторым моим решением было выполнение процесса синтаксического анализа JSON
в другом потоке после вызова responseJSON
из Alamofire
.После его завершения я обновлю свой интерфейс в главном потоке.Вот как это выглядит:
.responseJSON { (response) in //callback of Alamofire
if response.result.isSuccess {
let json = JSON(response.result.value!)
DispatchQueue(label: "parsing", qos: .userInitiated).async {
self.parseJSON(json)
DispatchQueue.main.async {
self.updateUI()
}
}
}
}
Но хороший ли это подход для решения этой проблемы?Я просто не хочу анализировать JSON
в главном потоке, потому что в процессе разбора есть пара циклов for
и другие операции, и, я думаю, это вызывает рисование вещей, связанных с пользовательским интерфейсом.