2016-04-29 3 views
1

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?

+0

Wenn Sie einfache Dinge tun, müssen Sie keine Zukunft überhaupt. –

+0

@EndeNeu, die einfache Sache ist nur ein Zweig der Arbeiten. Ich muss eine Zukunft konstruieren, um sicherzustellen, dass das Endergebnis "Zukunft" ist. – LoranceChen

+0

Sie können 'Future.successful' oder' Future.failed' tun, um eine Zukunft zu erhalten, die bereits "erledigt" ist. – Thilo

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.exceptionFuture.failed ist

Verwandte Themen