【发布时间】:2013-09-24 17:35:21
【问题描述】:
阻塞不好,异步好,但是在未来阻塞仍然阻塞吗?这是我不断回来的东西;考虑以下伪代码:
def queryName(id:Id):Future[String]
def queryEveryonesNames:Future[Seq[String]] = {
val everyonesIds:Future[Seq[Id]] = getIds
val everyonesNames:Future[Seq[Future[String]]] = {
everyonesIds.map(seq.map(id=>queryName(id)))
}
// I'm trying to understand the impact of what I'll do below
everyonesNames.map(seq=>seq.map(fut=>blocking(fut, 1 s)))
}
queryEveryonesNames
在最后一行中,我通过 上的 blocking 将 Future[Seq[Future[String]]](注意 future 在 future 中)转换为 Future[Seq[String]]内心的未来。
在未来中阻止未来感觉是多余的,至少在这里是这样,但在未来中拥有未来也感觉多余。
你能提出一个更聪明的方法来摆脱内心的未来吗?
你认为在未来中阻止未来是不好的吗?如果是,为什么以及在什么情况下?
【问题讨论】:
标签: scala asynchronous concurrency blocking future