当前位置: 首页 > 知识库问答 >
问题:

如何在Scala中展平期货列表

万明辉
2023-03-14

我想把这个val:

val f = List(Future(1), Future(2), Future(3))

对它进行一些操作(我正在考虑展平)

f.flatten

然后得到这个结果

scala> f.flatten = List(1,2,3)

如果展平方法在这里不合适,那很好。只要我得到结果。

谢啦!

共有1个答案

越麒
2023-03-14

未来。序列获取一个列表[Future[T]],并返回一个未来[List[T]]

你能做到的

Future.sequence(f) 

然后使用 maponComplete 访问值列表。

 类似资料:
  • 我有两个在未来发生的计算,如下所示: 我希望它能够运行,以便comp2总是在comp1完成后运行!我知道使用一个表达,我可以组成这两个Future的喜欢。 什么能保证comp1在comp2之前完成?我的意思是这些是发生在不同线程中的计算,并且不能保证运行的顺序。有没有一种方法可以保证没有阻塞的顺序?

  • 在这种情况下,我的做法是使用 将 转换为 。然后使用 获取结果。但是,可能有一个任务需要很长时间并且超时。在这种情况下,我仍然希望获得其余结果(同时并行运行所有任务)。可能吗?怎么办? 谢谢

  • 我想创建一个函数来返回成功操作的一系列期货的结果。我遇到的问题是返回类型为Unit,并且未来函数正在完成,而无需等待嵌套的未来序列完成。我尝试过不使用on完成函数,而是使用map或平面图,但没有成功。我还想避免使用wait 这个后来会这么叫

  • 我使用 并行运行 2 个期货。我想知道在所有情况下哪个成功了,哪个失败了(所有情况都应该运行到完成,并显示结果或失败状态)。目前,我只能检索到综合成功结果 我从这里开始操作,但这还不够,因为我无法获得单个失败时的成功状态,也无法获得两个失败时的失败状态。在Scala未来的理解中,两个失败都是失败的 我试图避免这种混乱: 编辑:另一个版本-这是一个有效的方法吗?

  • 在用收益结构组合期货时,有些有副作用,有些没有,我引入了竞争条件,因为取决于副作用的未来并没有将副作用的结果作为论据。 简而言之: 未来b读取由来自未来a的副作用改变的值,但是未来a不明确依赖于未来b的结果,因此可能在b完成读取之前发生。 为了解决这个问题,我的同事引入了一个虚拟函数,将b的结果作为参数并简单地将其丢弃。这样做是为了使依赖显式化。 实际代码如下: 在这种情况下,未来 b 为 带哑参

  • 假设我有一个抽象的“生产者”实例: 我需要对它产生的每个(或一些)对象进行一些处理。所以,我做了类似的事情: …并以<code>Future[Seq[Future[T]]]结束。这没关系,但有点麻烦。我想摆脱外部的,只需要就可以了,但我想不出一个(非阻塞)转换,可以让我这样做。 有什么想法吗?