Junior — Middle
Como usar o DispatchGroup para executar solicitações sequencialmente com a capacidade de interromper na terceira sem esperar pela quarta?
sobes.tech IA
Resposta da IA
O DispatchGroup no iOS é normalmente usado para acompanhar a conclusão de várias tarefas assíncronas. No entanto, para executar pedidos sequencialmente com a possibilidade de interromper na terceira solicitação sem esperar pela quarta, pode usar a seguinte abordagem:
- Não iniciar todos os pedidos ao mesmo tempo, mas executá-los sequencialmente, aguardando a conclusão do anterior.
- Para cada pedido, usar DispatchGroup para acompanhar sua conclusão.
- Quando ocorrer uma condição de interrupção (por exemplo, erro na terceira solicitação), não iniciar o próximo pedido e sair da cadeia.
Exemplo em Swift:
let dispatchGroup = DispatchGroup()
func performRequestsSequentially() {
dispatchGroup.enter()
performRequest1 { success in
dispatchGroup.leave()
guard success else { return }
dispatchGroup.enter()
performRequest2 { success in
dispatchGroup.leave()
guard success else { return }
dispatchGroup.enter()
performRequest3 { success in
dispatchGroup.leave()
guard success else { return }
// Se necessário, pode iniciar a quarta solicitação
// performRequest4 { ... }
}
}
}
}
func performRequest1(completion: @escaping (Bool) -> Void) {
// Requisição assíncrona
completion(true) // ou false em caso de erro
}
func performRequest2(completion: @escaping (Bool) -> Void) {
completion(true)
}
func performRequest3(completion: @escaping (Bool) -> Void) {
completion(false) // exemplo de interrupção
}
Assim, se a terceira solicitação terminar com erro (false), a quarta não será iniciada. O DispatchGroup ajuda a acompanhar a conclusão de cada solicitação, mas a sequência é controlada por chamadas aninhadas.