【发布时间】:2015-07-14 11:16:55
【问题描述】:
我有一个回调处理程序,它处理 URL 处理的多个阶段之一。在这个处理程序中,我必须使用第三方库(scala 接口)并计算一些将设置一个全局配置的值。此配置由以下阶段使用,它在回调处理程序中获得的值起着至关重要的作用。
这是设计的外观
def callbackHandler() : someReturnType = {
val myFut = getMyData() // return a future
myFut map {m => set_global} // evaluate the future
someReturnTypeObject
}
在这种情况下,这是我的问题。我正在使用的 Scala API 向我返回了一个未来,我使用“地图”对其进行评估。据我了解,在获得未来实例后,回调函数将继续处理待处理的内容,并且未来将在可用时进行评估(在单独的线程中)。
在这种情况下,我将如何确保让回调处理程序等待未来的评估?
将第 4 行移动到地图主体可能不起作用,因为如果地图需要时间,回调处理程序可能仍会提前返回。如果您有任何问题,或者我的理解有误,请告诉我。
【问题讨论】:
-
正如下面评论的那样,虽然您可以阻止您确实不应该阻止,但您的问题可能会更好地改写为您应该如何设计系统而不需要阻止未来
标签: scala functional-programming future