gem: --no-rdoc --no-ri не работает в macOS

Вы должны использовать группы отправки, вводя группу перед выдачей запроса и оставляя группу в обработчике завершения запроса. Итак, давайте предположим, что на секунду у вас был какой-то метод, который выполнял асинхронный запрос, но предоставил параметр обработчика завершения, который был бы закрыт, который будет вызываться при выполнении сетевого запроса:

func perform(request: URLRequest, completionHandler: @escaping () -> Void) { ... }

Чтобы запустить эти два одновременных запроса и получить уведомление, когда они будут выполнены, вы сделаете что-то вроде:

let group = DispatchGroup()

group.enter()
perform(request: first) {
    group.leave()
}

group.enter()
perform(request: second) {
    group.leave()
}

group.notify(queue: .main) {
    print("both done")
}

. Очевидно, что ваша реализация perform(request:) может значительно различаться (например, у вас может быть закрытие передает данные назад), но шаблон тот же, независимо от того, записываете ли вы свой собственный сетевой код с помощью URLSession или с помощью Alamofire. Просто используйте группы GCD, входящие в группу при создании запросов и оставляя группу в обработчике завершения асинхронного запроса.

0
задан Richard Topchiy 29 March 2019 в 12:06
поделиться