Ich verwende scala.concurrent.ExecutionContext.Implicits.global
für alle Executoren von Future. Aber irgendwann mache ich ein einfaches Ding und will es nur nicht ändern Thread (nicht im Thread-Pool), damit es weiterhin unter dem aktuellen Thread läuft. Verwenden Sie Twitter Future
, wo eine Future.value
dies erreichen kann. Wie geht es Scala in Zukunft?Wie lässt sich scala's Future auf dem aktuellen Thread ausführen?
1
A
Antwort
2
können Sie tun:
Future.fromTry(Try { ... })
Es spielt keine ExecutionContext
erfordern und im Grunde wertet nur Ausdruck sofort und Wraps führen in der Zukunft.
Eigentlich ist es hier Implementierung ist:
def fromTry[T](result: Try[T]): Future[T] = Promise.fromTry(result).future
So scheint Future.value
direkte Entsprechung von Twitters zu sein.
Verwenden Sie auch Future.successful
, wenn Ihr Code keine Ausnahmen oder Future.failed
trow, wenn Sie bereits gescheiterte Zukunft erstellen möchten.
1
Das Äquivalent von twitter Future.value
in der Scala-Standardbibliothek ist Future.successful
.
Future.const
ist Future.fromTry
Future.exception
Future.failed
ist
Wenn Sie einfache Dinge tun, müssen Sie keine Zukunft überhaupt. –
@EndeNeu, die einfache Sache ist nur ein Zweig der Arbeiten. Ich muss eine Zukunft konstruieren, um sicherzustellen, dass das Endergebnis "Zukunft" ist. – LoranceChen
Sie können 'Future.successful' oder' Future.failed' tun, um eine Zukunft zu erhalten, die bereits "erledigt" ist. – Thilo