sff4s (simple future facade for Scala) is a Scala wrapper around several future implementations.
libraryDependencies ++= Seq(
"com.eed3si9n" %% "sff4s-api" % "0.1.0",
"com.eed3si9n" %% "sff4s-juc" % "0.1.0")
The API mostly mimics that of twitter util's Future
:
val factory = sff4s.impl.ActorsFuture
val f = factory future {
Thread.sleep(1000)
1
}
val g = f map { _ + 1 }
g(2000) // => This blocks for the futures result (and eventually returns 2)
// Another option:
g onSuccess { value =>
println(value) // => prints "2"
}
// Using for expressions:
val xFuture = factory future {1}
val yFuture = factory future {2}
for {
x <- xFuture
y <- yFuture
} {
println(x + y) // => prints "3"
}
// Using implicit conversion
import factory._
val native = scala.actors.Futures future {5}
val w: sff4s.Future[Int] = native
w() // => This blocks for the futures result (and eventually returns 5)
Platform independent API consisting of abstract class Future[+A]
, which represents a future value; and trait Futures
, which represents the dispatcher to create the future values.
Wrapper around scala.actors.Future
.
Wrapper around java.util.concurrent.Future
.
Wrapper around akka.dispatch.Future
.
Wrapper around com.twitter.util.Future
. Note unlike other implementation, TwitterUtilFuture.future
does not process the calculation in the background. Instead, you're supposed to create a Promise
object and set the value using your own concurrency mechanism.