Sobes.tech
Junior — Middle

Pode explicar o conceito de Future no framework Combine e o seu papel nas operações assíncronas?

sobes.tech IA

Resposta da IA

No Combine, Future é um tipo de Publisher que representa uma operação assíncrona diferida que será concluída com um valor bem-sucedido ou um erro. É usado para envolver tarefas assíncronas de uma só vez que retornam um resultado no futuro.

O papel principal do Future é fornecer uma maneira conveniente de integrar operações assíncronas em cadeias de Combine, permitindo que os assinantes recebam o resultado quando estiver disponível.

Exemplo de uso do Future:

import Combine

func fetchData() -> Future<String, Error> {
    return Future { promise in
        DispatchQueue.global().asyncAfter(deadline: .now() + 1) {
            let success = true
            if success {
                promise(.success("Dados carregados"))
            } else {
                promise(.failure(NSError(domain: "Error", code: -1, userInfo: nil)))
            }
        }
    }
}

let cancellable = fetchData()
    .sink(receiveCompletion: { completion in
        switch completion {
        case .finished:
            print("Operação concluída")
        case .failure(let error):
            print("Erro: \(error)")
        }
    }, receiveValue: { value in
        print("Valor recebido: \(value)")
    })

Dessa forma, Future permite envolver código assíncrono em um fluxo de Combine, simplificando o trabalho com assíncrono e tratamento de erros.