У меня есть проблема с цепочкой 2 фьючерсов вместе, что я хотел бы сделать, это следующее:цепных фьючерсы с цикл, содержащие не только фьючерсы
import scala.concurrent.{ ExecutionContext, Future }
def lastFiveFullNews: Future[Seq[FullNews]] = {
for (
seq <- getLastFiveNews;
news <- seq;
fullNews <- getFullNewsById(news.id) //error at this line
) yield fullNews
}
со следующими сигнатурами методов:
def getLastFiveNews: Future[Seq[News]]
def getFullNewsById(id: Long): Future[FullNews]
def lastFiveFullNews: Future[Seq[FullNews]]
в основном FullNews генерируется с идентификатором News. В редакторе Idea не сообщается об ошибке, но компилятор игры говорит:
тип несоответствие; найдено: scala.concurrent.Future [FullNews] требуется: [?] scala.collection.GenTraversableOnce
Я думаю, что это не работает, потому что в течение цикла есть не только фьючерсов, но Scala также Seq. Но без Seq я не знаю, как его написать. Есть идеи ? Благодарю.
Большое спасибо! – f7h
Вы также можете использовать 'Future.traverse', объединяющий' Future.sequence' и 'Seq # map':' Future.traverse (seq) (news => getFullNewsById (news.id)) '. –