什么是Future
当程序中的某个过程执行时间较长,同时它与程序中的其他环节没有很强的关联性,那么这个过程便可以提取出来作为一个线程单独运行,Scala中的Future便是用来解决此类问题,可以将用于并发执行的操作添加到Future中,然后在未来的某个时间点再获取其执行结果。
回调函数
为了能够获取Future线程的执行结果,就需要在特定的状态通过回调函数获取返回值。Future的状态主要有两类,完成与未完成,而完成状态又分为成功与失败,成功会有并发执行函数的返回值,失败则会抛出异常。
常用的有三类回调函数,onComplete、onSuccess、onFailure 。
def onComplete[U](f: (Try[T]) ⇒ U)(implicit executor: ExecutionContext): Unit
从onComplete的接口来看它需要接收一个Try[T] => U的参数,Future如果执行成功,回调会使用Success[T]类型的值,如果失败则会使用Failure[T]类型的值。
import scala.util.{Success, Failure}
val f: Future[List[String]] = Future {
session.getRecentPosts
}
f onComplete {
case Success(posts) => for (post <- posts) println(post)
case Failure(t) => println("An error has occured: " + t.getMessage)
}
当只想处理成功或