Thi*_*ilo 1 concurrency scala yield future
我Future使用以下语法进行三次数据库调用(全部返回值):
for {
a <- databaseCallA
b <- databaseCallB(a)
c <- databaseCallC(a)
} yield (a,b,c)
Run Code Online (Sandbox Code Playgroud)
第二次和第三次调用取决于第一次调用的结果,但是它们中的两个可以并行运行.
如何databaseCallC在databaseCallB不等待结果后立即发出b?
或者这已经发生了?
目前还没有发生这种情况 - 你告诉期货一个接一个地开始.要并行第二次和第三次调用,您可以使用:
for {
a <- databaseCallA
(eventualB, eventualC) = (databaseCallB(a), databaseCallC(a))
b <- eventualB
c <- eventualC
} yield(a,b,c)
Run Code Online (Sandbox Code Playgroud)
一旦a可用,这将开始计算b和c,并且一旦三者都可用,则完成所有三个
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |