Junior — Middle
Puteți explica conceptul de Future în cadrul framework-ului Combine și rolul său în operațiile asincrone?
sobes.tech AI
Răspuns de la AI
În Combine, Future este un tip de Publisher care reprezintă o operație asincronă întârziată, care se va încheia fie cu o valoare de succes, fie cu o eroare. Este utilizat pentru a înveli sarcini asincrone unice care returnează un rezultat în viitor.
Rolul principal al Future este de a oferi o modalitate convenabilă de a integra operațiuni asincrone în lanțurile de Combine, permițând abonaților să primească rezultatul atunci când devine disponibil.
Exemplu de utilizare a 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("Date încărcate"))
} else {
promise(.failure(NSError(domain: "Error", code: -1, userInfo: nil)))
}
}
}
}
let cancellable = fetchData()
.sink(receiveCompletion: { completion in
switch completion {
case .finished:
print("Operație finalizată")
case .failure(let error):
print("Eroare: \(error)")
}
}, receiveValue: { value in
print("Valoare primită: \(value)")
})
Astfel, Future permite învelirea codului asincron într-un flux de Combine, simplificând lucrul cu asincronia și gestionarea erorilor.