Вы можете создать простой хвостовой рекурсивный метод для повторяющейся цепочки Future{ func(result) }
через flatMap
для заданного числа раз:
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
def func(s: String): String = ???
@scala.annotation.tailrec
def loopFutures(future: Future[String], n: Int): Future[String] = n match {
case 1 => future
case _ => loopFutures(future.flatMap(r => Future{ func(r) }), n - 1)
}
Например, использовать метод loopFutures
для выполненияfor-comprehension
:
loopFutures(Future{ func(shopRequest) }, 17)