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 次 |
最近记录: |