Slick有DBIO.seq
和DBIO.sequence
用于运行许多DBIOAction
s,其中后续操作的结果不需要后续操作。
我查看了源代码,如果DBIO.seq
按顺序运行动作,对我来说并不明显。另一方面,DBIO.fold
有一个非常简单的实现,肯定会按顺序运行动作,因为它只是在内部使用flatMap
。
我的问题是:使用seq
和sequence
时会保证订单,就像fold
一样吗?
documentation表示DBIO.seq
中的行为按顺序执行:
最简单的组合器是DBIO.seq,它按顺序运行varargs动作列表
另外,在source code的DBIO.seq
中,你会看到SynchronousDatabaseAction
在foreach
中被调用,这意味着每个都是在没有任何并行运行的情况下进行基本上和(内部)同步调用。