의 미래를 피하기 위해 Yeild에서 미래를 반환 처리하는 더 좋은 방법 : - 이해를이에서스칼라 : 고려 아래 코드 미래
, 나는 '수율'를 사용하여 미래의 값을 얻기 위해 노력하고 있어요. 이제 yield 메소드에서 future를 반환하는 함수 fallbackResult를 호출하여 getData의 반환 유형이 'Future [Option [Int]]가 아닌'Future [Future [Option]] '이되도록 확인해야합니다. ]] '. 나는 이것을 어떻게 더 좋은 방법으로 만들 수 있을까? (I지도 & FlatMap 년대를 사용했지만 의한지도와 FlatMaps 중첩에 코드를 조금 추한)
def getData(): Future[Future[Option[Int]]] = {
/* These are two future vectors. Ignore the Objects */
val substanceTableF: Future[Vector[OverviewPageTableRowModel]] = getSubstanceTable(substanceIds, propertyId, dataRange)
val mixtureTableF: Future[Vector[OverviewPageTableRowModel]] = getMixtureTableForSubstanceCombination(substanceIds, propertyId, dataRange)
/* I have put for yeild to get values from futures.*/
for {
substanceTable <- substanceTableF
mixtureTable <- mixtureTableF
} yield {
if(substanceTable.isEmpty && mixtureTable.isEmpty) {
val resultF = fallbackResult()
resultF.map(result => {Some(result)})
} else {
Future.successful(Some(100))
}
}
}
private def fallbackResult(): Future[Int] = {
// This method returns future of int
}
가능한 중복 https://stackoverflow.com/questions/40599279/scala-pattern-for-comprehension-that-yields-a-futurea –