Выполнение зависимостей по порядку с использованием Scala Futures - PullRequest
0 голосов
/ 09 июля 2020

У меня есть исполнитель задач, который выглядит следующим образом Но я всегда получаю это в неправильном порядке.

Ожидаемый порядок следующий

Кипящая вода Кипящее молоко Смешивание молока и воды Добавление порошка кофе Добавление сахара Кофе готов к подаче

Кипячение молока и воды можно делать в любом порядке, но все остальное нужно выполнять по порядку. Я выполняю тело на Future.sequence.map {}, но по-прежнему порядок неверен. С этим кодом наверняка что-то не так, но я не могу понять это.

1 Ответ

2 голосов
/ 09 июля 2020

Проблема в ложном лишнем Future в run.

def run(): Future[Unit] = Future { // <-- Not required
  Future
    .sequence(dependencies.map(_.run()))
    .map { _ => body }
}

Удаление устраняет проблему:

def run(): Future[Unit] = 
  Future
    .sequence(dependencies.map(_.run()))
    .map { _ => body }
...