这就是这种情况
我有一个功能
def funcA(): Future[Map[String,String]] // Lets say Future1
def funcB(): Future[Map[String,String]] // Lets say Future2
所以我要做的是定义另一个函数 //需要对该功能进行一些更改
def funcCombine(): Future[Map[String,String]] = {
for{
a <- funcA()
b <- funcB() if a.isEmpty
}
}
从FuncA中检查地图的值,如果不为空,则返回它,否则检查FuncB中的地图,如果不为空,则返回该地图,否则返回空的地图。
如何执行这种后备机制。 我试图自己解决这个问题,但是什么都做不出来。
答案 0 :(得分:3)
我认为flatMap
将在这里成为您的朋友。
funcA().flatMap(m => if (m.isEmpty) funcB() else Future.successful(m))
答案 1 :(得分:0)
def funcCombine(): Future[Map[String,String]] = {
Future.find(List(funcA(),funcB()))(mapp => mapp.nonEmpty).map{
case Some(mapp) => mapp
case None => Map.empty
}
}