У меня есть два метода:
def getNextJob: Future[Option[Job]]
def process(job: Job): Future[Unit]
Я хотел бы обрабатывать все задания, пока не осталось рабочих мест.
Я могу сделать это с помощью Await
например
private def process()(implicit ctx: ExecutionContext): Future[Unit] = {
var job: Option[Job] = Await.result(service.getNextJob, FiniteDuration(2, TimeUnit.SECONDS))
while(job.isDefined) {
Await.result(process(job.get), FiniteDuration(2, TimeUnit.SECONDS))
job = Await.result(service.getNextJob, FiniteDuration(2, TimeUnit.SECONDS))
}
Future.successful()
}
Но это ужасно и неправильно использует Futures.Есть ли способ, которым я мог бы каким-то образом связать фьючерсы, чтобы заменить это?