我们知道这段代码:
Await.result(someFuture, Duration.Inf)
如果我将有限值的持续时间设为3秒,一旦过期,则会抛出TimeOutException。
持续时间.Inf怎么样,我担心应用程序会挂起。使用Duration.Inf?
的最佳做法是什么?答案 0 :(得分:3)
使用
Duration.Inf
的最佳做法是什么?
最佳做法是不要阻止使用Await
,并使用某种回调来异步处理Future
,例如map
,foreach
,{ {1}},onSuccess
等,具体取决于您的使用情况。
如果您因任何原因必须阻止使用onFailure
(实际执行此操作的理由很少),您应该设置一个具有合理限制的有限Await
。例如,如果您知道Duration
通常需要5秒钟才能完成,可能会将超时设置为10秒。否则,如果someFuture
未完成,则调用Await
的线程可以永久挂起。
使用Future
可以带来任何好处,除非你希望应用程序无限期地挂起等待早该过期Duration.Inf
,这样做绝对是至关重要的。但总的来说,让它崩溃比不回应更好。