【问题标题】:fs2: Check for success of Seq(Task)fs2:检查 Seq(Task) 是否成功
【发布时间】:2017-11-20 16:09:50
【问题描述】:

我有一个异步 http4s 客户端,在运行一些请求后,我可以从中获得一组结果。我想检查所有Task 对象的此集合(Seq[Task[Response]])是否已完成,并且Response 对象处于特定状态。

如果我使用 Future 而不是 Task,我会做类似的事情

val results: Seq[Future[Response]] = ...
Future.sequence(results).map(_.forall(_.customFunction.isSuccess))

有没有办法使用fs2.Task 来实现类似的功能?在我有限的理解中,我假设在某些时候我将不得不调用unsafeRun,这将阻止集合中的每个Task

【问题讨论】:

    标签: scala task scalaz http4s fs2


    【解决方案1】:

    您可以将Future.sequence 替换为:

    val results: Seq[Task[Response]] = ...
    val sequence: Task[Seq[Response]] = results.foldLeft(Task.now(Seq.empty[Response])) {
      (x, t) => x.flatMap(s => t.map(r => s :+ r))
    }
    

    然后以同样的方式进行成功检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多