Future - wurzelsand/swift-memos Wiki

Future

Themen

Aufgabe

Erzeuge einen Publisher future der nach einer Sekunde Verzögerung den String "Hello World" veröffentlicht. Trage zwei Subscriber für future ein.

Ausführung

import Foundation
import Combine

let future = Future<String, Never> { promise in
    print("Start closure")
    DispatchQueue.global().asyncAfter(deadline: .now() + 1) {
        promise(.success("Hello World"))
    }
}
print("Go")
var subscriptions = [AnyCancellable]()
future
    .sink(receiveCompletion: { print("completion:", $0) }, receiveValue: { print($0) })
    .store(in: &subscriptions)
future
    .sink { print("Second:", $0) }
    .store(in: &subscriptions)
RunLoop.main.run(until: Date(timeIntervalSinceNow: 2))

Ausgabe:

Start closure
Go
Second: Hello World
Hello World
completion: finished
Program ended with exit code: 0

Anmerkung