为理解而编写的DBIOAction是否总是按顺序运行?

时间:2018-10-30 16:31:22

标签: slick scalaquery

我知道,将Scala中的Futures归类以进行理解时,除非它们被声明为进行理解之外,否则它们将按顺序运行(如this article所述)。 DBIOActions是否以相同的方式工作?例如在以下查询中,是否保证query1query2之前执行?

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

1 个答案:

答案 0 :(得分:0)

是的!保证query1query2之前运行。请记住,for理解等效于:

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

和DBIOAction上flatMap的文档指出:“使用成功执行此操作产生的结果来计算,然后依次运行下一个操作。” http://slick.lightbend.com/doc/3.2.0/api/index.html#slick.dbio.DBIOAction@flatMap