xxxxxxxxxx
import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global
def slowOperationFuture(name: String): Future[String] = {
Future{
Thread.sleep(1000)// do nothing for 1 second
name + " returned!"
}
}
// note that this is an asynchronous (nonblocking) function
def makeTextUpperCaseSlowFuture(inputText: String): Future[String] = {
Future{
Thread.sleep(1500) // Do nothing for 1,5 seconds
inputText.toUpperCase
}
}
slowOperationFuture("foo")
.flatMap(output => makeTextUpperCaseSlowFuture(output))
// >>> res: Future[String] = Success("FOO RETURNED!")