[SWIFT] Erweiterung, die den an den Initialisierer von Combine.Future übergebenen Abschluss asynchron ausführt

was ist das?

Ist Zukunft nicht ein Zukunftsmuster? Warum ist der Wert zum Zeitpunkt der Generierung bereits festgelegt? Ist das nicht einfach?

Ich habe versucht, es mit DispatchQueue im Closure asynchron zu machen, aber es ist problematisch. Also habe ich es geschafft.

import Combine

extension Future {
    
    convenience init<S: Scheduler>(on scheduler: S, _ attemptToFulfill: @escaping (@escaping Promise) -> Void) {
        
        self.init { promise in
            scheduler.schedule {
                attemptToFulfill(promise)
            }
        }
    }
}

Wie benutzt man


let future = Future<Int, Error> { promise in
                 DispatchQueue.global().async {
                     sleep(1)
                     promise(.success(1))
                 }
}

Das ist

let future = Future<Int, Error>(on: DispatchQueue.global()) { promise in
                 sleep(1)
                 promise(.success(1))
}

Es wird so sein.

Recommended Posts

Erweiterung, die den an den Initialisierer von Combine.Future übergebenen Abschluss asynchron ausführt
[Swift] Einführung in die Logik der Apps, die die Auswahl bestanden haben
So überprüfen Sie die Erweiterung und Größe der hochgeladenen Dateien
Dies und das von JDK
Ein Memo, das nüchtern von der Anfrage nach mehrteiligen / Formulardaten abhängig war
Für Sie, die beklagen, dass die Konvertierung von JODConverter + LibreOffice langsam ist