Sobes.tech
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.