1
我有两个期货。我想按顺序执行它们。例如:斯卡拉未来执行
val ec: ExecutionContextExecutor = ExecutionContext.Implicits.global
val first=Future.successful(...)
val second=Future.successful(...)
第一次完成后,应执行第二次。的问题是,第二应返回Future[Object]
不Future[Unit]
所以 我不能使用完成,andThen
等功能 我不能阻止使用await
或Thread.sleep(...)
我不能因为执行上下文循环使用过程中的定义如下。
first.flatmap(_=> second)
将不会按顺序执行。 我该怎么做?
刚把'second'变成'def'而不是'val'? –
也许你可以使用一些轮询第一个“未来”来完成,当它完成时运行第二个。 – SergeiK
@ SaschaKolberg的建议,试着将'first'和'second'定义为'def'而不是'val',然后'first.flatmap(_ => second)'将按顺序依次完成这两个期货。 (没有必要把'first'定义为'def',但对于对称来说它似乎很好,如果first是'def',并且引用first将重新执行'Future.successful(...)'。) –