Я пишу приложение Scala, используя драйвер ReactiveMongo. Методы, к которым обращаются к db, всегда возвращаются Future[T]. Являются ли следующие фрагменты кода эквивалентными?
(С onComplete)
val results: Future[List[Tag]] = Tags.all.toList
results onComplete {
case Success(list) => //do something with list
case Failure(t) => //throw the error
}
(С flatMap)
Tags.all.toList.flatMap(list => //do something with list)
Какая разница?
Плоская карта не бросает неудачу??? И flatMap является обратным вызовом типа onComplete или до тех пор, пока оператор Tags.all.toList не будет завершен?