我得到了以下代码
val obj1Seq: Future[Seq[Object1]] = /* call function returning Future[Seq[Object1]] */
val obj2Seq: Future[Seq[Object2]] = /* call function returning Future[Seq[Object2]] */
for {
objects1 <- obj1Seq
objects2 <- obj2Seq if (objects1.map(_.id) == objects2.map(_.relateObjId))
} yield {
objects2
}
有了这个,我想从
Object2
列表中获取 relatedObjId
与相同 id
匹配的所有 objects1
我的问题是我不断收到错误
Future.filter predicate is not satisfied
我在这里阅读了一些其他问题(this,this,this)并尝试使这些解决方案适应我的问题,但我没有得到解决
如果不满足谓词(序列比较),您会得到预期的错误。 IE。除了上述例外,您会得到
Future.failed
。
如果我理解你的需求,你宁愿想要这样的东西,它总是能带来成功的结果(如果两个最初的未来都成功):
val result: Future[Seq[Objects]] = for {
objects1 <- obj1Seq
objects2 <- obj2Seq
} yield {
if (someCondition(objects1, objects2)) {
// Some logic to get the desired results
???
} else {
Seq.empty
}
}