У меня есть iterable
фьючерсов, каждый из которых возвращает последовательность: Iterable[Future[Seq[Int]]]
В результате мне нужна последовательность, которая представляет собой конкатенацию последовательностей, возвращаемых с фьючерса: Seq[Int]
.scala фьючерсы последовательное ленивое исполнение
Дело в том, что мне нужны только первые n
элементы результирующей последовательности, поэтому мне не всегда нужно выполнять все фьючерсы. Я также заранее не знаю, сколько фьючерсов нужно выполнить для его достижения (возможно, первый из них вернет достаточно, возможно, нам нужно выполнить все).
Очевидно, что мне нужно выполнить мои функции последовательно. Я мог бы сделать foreach и break/return, но я хотел бы выразить это в функциональном стиле.
Обратите внимание, что если у вас уже есть 'Iterable'' Future ', они уже« запущены ». –
@EndeNeu ах, это очень ценный комментарий! Так, на самом деле, нет способа «отменить» их больше? –
, но подождите немного, если это действительно «Итерируемый», а не 'Seq', они действительно будут запущены? Я инициализирую их «по требованию», разве это не поможет? –