如何使用Play with Scala映射多个Futures并将它们作为参数传递给视图

Hen*_*lho 1 scala playframework

我认为下面的标题和图片足以理解我想在这里实现的目标......
如果还不够,我会及时编辑它以添加更多细节!

在此输入图像描述

先感谢您!

Pet*_*ens 5

您可以使用flatMap而不是第一个map:

repo.lookup(id) flatMap { album =>
  musicRepo.fromAlbum(id) map { musics =>
    Ok(views.html.albums.show(album, musics)
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以用以下内容替换以进行理解:

for {
  album <- repo.lookup(id)
  musics <- musicRepo.fromAlbum(id)
} yield Ok(views.html.albums.show(album, musics)
Run Code Online (Sandbox Code Playgroud)

你也可以Future在for comprehension之前创建s,这样两个调用可以并行发生.

val fAlbum = repo.lookup(id)
val fMusics = musicRepo.fromAlbum(id)

for { album <- fAlbum; musics <- fMusics } 
yield Ok(views.html.albums.show(album, musics)
Run Code Online (Sandbox Code Playgroud)