Каков наилучший способ объединить Alamofire в очередь? - PullRequest
0 голосов
/ 27 ноября 2018

Я новичок в Swift и почти ничего не знаю о потоках, операциях, очередях и т. Д. И у меня есть, например, начальная страница в моем приложении, где я использую 3 запроса alamofire, например:

request1 => request2

request3

                     => segue to the next view

Это означает, что запросы 1 и 2 являются последовательными, но 3 может быть параллельным и передавать только тогда, когда ВСЕ запросы выполнены и обработаны.

Я пытался OperationsQueue и впо крайней мере, это было быстрее =) но на консоли XCode я вижу, что некоторый код в обоих успешных примерах Alamofire выполняется после того, как segue был выполнен.

Так что, как лучше всего объединить до 5 Alamofire без make?их вложенные ?Или как правильно обрабатывать асинхронные функции с OperationQueue?

1 Ответ

0 голосов
/ 27 ноября 2018

DispatchGroup может иногда вызывать проблемы, такие как deadlock .Вы можете использовать блок завершения.Функциональные блоки завершения являются асинхронными функциями.

func 1(completion:@escaping () -> ()) {

   func 2(completion:@escaping () -> ()) {

      func 3(completion:@escaping () -> ()) {

       //You dont never know when func1 is finished. So you have to write nested functions. 
       //In this situation func2 waits func1. And func3 wait for func1 and func2. 
       //You can write the func3 at the top. This is you choice. 
      }

   }

}
...