Junior
Qual é a diferença entre pedidos síncronos e assíncronos?
sobes.tech IA
Resposta da IA
Requisições síncronas bloqueiam o thread de execução atual até receber uma resposta. Requisições assíncronas não bloqueiam o thread; a resposta é processada ao concluir a operação, geralmente através de um mecanismo de callback, delegado ou encerramento.
| Característica | Requisição síncrona | Requisição assíncrona |
|---|---|---|
| Bloqueio do thread | Sim | Não |
| Reatividade da UI | Pode bloquear a UI | Não bloqueia a UI |
| Complexidade de implementação | Mais simples | Mais complexa (gestão de estado) |
| Uso em iOS | Raro, apenas para tarefas curtas, não na thread principal | Preferido, especialmente para operações longas |
Exemplo de requisição assíncrona usando URLSession:
// Criar URLSessionTask
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// Este bloco é executado de forma assíncrona após a conclusão da requisição
if let error = error {
print("Erro: \(error.localizedDescription)")
return
}
// Processamento dos dados recebidos
if let data = data {
print("Dados recebidos, bytes: \(data.count)")
}
// A atualização da UI deve ocorrer na thread principal
DispatchQueue.main.async {
// Atualizar UI
}
}
// Iniciar a tarefa
task.resume()
// O código aqui é executado imediatamente, sem esperar pela conclusão da requisição
print("Requisição enviada")