寻找最好的方式来编写需要一个接一个地运行异步的函数链。鉴于这两个选项:带期货的斯卡拉风格
选项1
def operation1(): Unit = {...}
def operation2(): Unit = {...}
def foo(): Future[Unit] =
Future {
operation1()
operation2()
} onComplete {case _ => println("done!")}
选项2
def operation1(): Future[Unit] = {...}
def operation2(): Future[Unit] = {...}
def foo(): Future[Unit] = {
operation1()
.flatMap {case _ => operation2() }
.onComplete {case _ => println("done!")}
}
- 是否有一个比其他任何优点/缺点?
- 我相信选项1将在同一后台线程上运行这两个函数。选项2也是这种情况吗?
- 这有什么好的做法吗?
另一个问题,因为这个功能:
def foo: Future[A]
如果我想要的结果转换为单位,这是做到这一点的最好办法:
foo map { _ =>() }
谢谢!