Difference Await.ready and Await.result

前端 未结 3 1039
误落风尘
误落风尘 2021-02-02 07:14

I know this is quite an open ended question and I apologize.

I can see that Await.ready returns Awaitable.type while Await.result

3条回答
  •  星月不相逢
    2021-02-02 07:38

    They both block until the future completes, the difference is just their return type.

    The difference is useful when your Future throws exceptions:

    def a = Future { Thread.sleep(2000); 100 }
    def b = Future { Thread.sleep(2000); throw new NullPointerException }
    
    Await.ready(a, Duration.Inf) // Future(Success(100))    
    Await.ready(b, Duration.Inf) // Future(Failure(java.lang.NullPointerException))
    
    Await.result(a, Duration.Inf) // 100
    Await.result(b, Duration.Inf) // crash with java.lang.NullPointerException
    

提交回复
热议问题