Всегда ли DBIOActions, составленные для понимания, выполняются последовательно? - PullRequest
0 голосов
/ 30 октября 2018

Я знаю, что фьючерсы в Scala, сгруппированные для понимания, запускаются последовательно, если они не объявлены за пределами понимания (как объясняет эта статья ). Работают ли DBIOActions таким же образом? например в следующем запросе гарантируется ли выполнение query1 до query2?

db.run {
  for {
    result1 <- query1.result
    result2 <- query2.result
  } yield (result1, result2)
}

1 Ответ

0 голосов
/ 16 декабря 2018

Да! query1 гарантированно работает до query2. Помните, что для понимания эквивалентно:

query1.reult.flatMap(result1 => query2.result.map(result2 => (result1, result2))

и документы для flatMap на DBIOAction гласят: «Используйте результат, полученный при успешном выполнении этого действия, для вычисления, а затем выполните следующее действие последовательно». http://slick.lightbend.com/doc/3.2.0/api/index.html#slick.dbio.DBIOAction@flatMap

...