Akka,链接 Futures
Akka, chaining Futures
我有三种 return 未来的方法,我如何正确地链接它们,以便第一个的输出传递给第二个,第二个的 return 传递给第三个,最后将它们全部发送以上数据为最终未来。我不确定这是解决此问题的正确方法。
Source
.fromFuture(someFuture)
.mapAsync(1)(modelData => queryModelData(modelQuery))
.mapAsync(1)(modelId => findModelId(modelData))
.mapAsync(1)(jobData => queryJobData(jobQuery))
.mapAsync(1)(status => setModelStatus(modelData,modelId,jobData))
您可以使用 .flatMap
(或 for-comprehension 来顺序链接多个 Future,后者是相同的语法糖)。
例如
Source
.fromFuture(someFuture)
.mapAsync(1){ data =>
for {
modelData <- queryModelData(data)
modelId <- findModelId(modelData)
jobData <- queryJobData(modelId)
status <- setModelStatus(modelData, modelId, jobData)
} yield status
}
我有三种 return 未来的方法,我如何正确地链接它们,以便第一个的输出传递给第二个,第二个的 return 传递给第三个,最后将它们全部发送以上数据为最终未来。我不确定这是解决此问题的正确方法。
Source
.fromFuture(someFuture)
.mapAsync(1)(modelData => queryModelData(modelQuery))
.mapAsync(1)(modelId => findModelId(modelData))
.mapAsync(1)(jobData => queryJobData(jobQuery))
.mapAsync(1)(status => setModelStatus(modelData,modelId,jobData))
您可以使用 .flatMap
(或 for-comprehension 来顺序链接多个 Future,后者是相同的语法糖)。
例如
Source
.fromFuture(someFuture)
.mapAsync(1){ data =>
for {
modelData <- queryModelData(data)
modelId <- findModelId(modelData)
jobData <- queryJobData(modelId)
status <- setModelStatus(modelData, modelId, jobData)
} yield status
}