把未来放在一起

前面的示例演示了 Future 的各个功能,处理成功和失败案例。但是,通常情况下,两个功能都处理得更为简洁。这是一个用更整洁,更现实的方式编写的例子:

object Calculator {
    def calculateAndReport(a: Int, b: Int) = {
        val eventualQuotient = FutureDivider divide(a, b)
        
        eventualQuotient map {
            quotient => println(s"Quotient: $quotient")
        } recover {
            case ex: ArithmeticException => println(s"It failed with: ${ex.getMessage}")
        }
    }
}