在 Scala 中查找两个 Future[Int] 之间的区别

Posted

技术标签:

【中文标题】在 Scala 中查找两个 Future[Int] 之间的区别【英文标题】:Find difference between two Future[Int] in Scala 【发布时间】:2021-09-05 21:54:09 【问题描述】:

我是 Scala 和 Futures 的新手。我的场景如下 -

val futureTotalCount : Future[Int]
val futureProcessedCount : Future[Int]

//I need to find the difference of above two futures to get unProcessedCount, something like-
val futureUnProcessedCount : Future[Int] = (futureTotalCount - futureProcessedCount)

这样的事情在 Scala 中是否可行?

【问题讨论】:

你可能想做一些关于期货和 Scala 的基本教程/课程。 我正在这样做,但我有一个紧急提交,所以我需要快速的东西。谢谢。 【参考方案1】:

尝试以下方法:

val futureTotalCount: Future[Int] = Future(2)
val futureProcessedCount: Future[Int] = Future(1)
    
val futureResultCount: Future[Int] = for
  totalCount <- futureTotalCount
  processedCount <- futureProcessedCount 
 yield (totalCount - processedCount)

// Or:
val futureResultCount = futureTotalCount.flatMap  totalCount =>
  futureProcessedCount.map  processedCount =>
    totalCount - processedCount
  

【讨论】:

【参考方案2】:
futureTotalCount zip futureProcessedCount map  case(a,b) => a -  b 

【讨论】:

以上是关于在 Scala 中查找两个 Future[Int] 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

Scala 中的嵌套过滤器要么在 Future[Try[Int]] 之上

为啥 Future(1) 在回复和编译程序之间返回不同的结果?

Scala之Future超时

类型不匹配。必需:布尔值,在 Scala 中找到:Future[Boolean]

在 Scala 期货中,我应该让我的函数返回 Future 还是返回 Try?

Scala的Future介绍