Всегда ли DBIOActions, составленные для понимания, выполняются последовательно?
Я знаю, что фьючерсы в Scala, сгруппированные для понимания, запускаются последовательно, если они не объявлены вне для понимания (как объясняется в этой статье). Работают ли DBIOActions таким же образом? Например, в следующем запросе query1
гарантированно выполнить раньше query2
?
db.run {
for {
result1 <- query1.result
result2 <- query2.result
} yield (result1, result2)
}
0 ответов
Да! 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