使用自定义ExecutionContext执行Future.sequence

时间:2014-05-22 02:37:38

标签: scala reactive-programming

我正在尝试使用指定的Future[List[Int]]List[Future[Int]]创建ExecutionContext。但是,我收到类型为CanBuildFrom的第二个隐式参数cbf的错误。我不完全理解CanBuildFrom参数的用途,当我尝试省略它时,我遇到错误,如下所示:

- not enough arguments for method sequence: (implicit cbf:       scala.collection.generic.CanBuildFrom[List[scala.concurrent.Future[Int]],Int,List[Int]]

有人可以解释一下,并建议一个解决方案吗?这是我当前的测试代码,它遇到上述编译错误:

val my: List[Future[Int]] = Future.successful(1) :: Future.successful(2) :: Future.successful(3) :: Nil
val zz: Future[List[Int]] = Future.sequence(my)(ec)

1 个答案:

答案 0 :(得分:11)

Future.sequence需要CanBuildFrom在其返回的Future内构建集合。标准库中的许多其他方法都需要CanBuildFrom,例如集合API中的大多数map方法。

Future.sequence的隐式参数列表由两个参数组成,两者都必须存在于任何调用中。要隐式指定一个,另一个隐式指定,请使用implicitly。例如:

val zz: Future[List[Int]] = Future.sequence(my)(implicitly, ec)