fs2:检查 Seq(任务)是否成功



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

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

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

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

你可以用类似的东西替换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))
}

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

相关内容

  • 没有找到相关文章

最新更新