1
私は2つの先物があります。私はそれらを順番に実行したい。例:スカラの今後の実行
val ec: ExecutionContextExecutor = ExecutionContext.Implicits.global
val first=Future.successful(...)
val second=Future.successful(...)
最初に完了したら、次に2番目を実行します。問題は、第二は、私が完了使用することができないので、 Future[Object]
ないFuture[Unit]
、andThen
等の機能 私は実行コンテキストのでループに使用できませんawait
又はThread.sleep(...)
を用いた処理をブロックすることができないが、このように定義されるを返すべきであるということです。
first.flatmap(_=> second)
は順番に実行されません。 どうすればいいですか?
だけを5秒間待ってから印刷します'second'を' val'の代わりに 'def'にしますか? –
おそらく完了のために最初の 'Future'のポーリングを使うことができ、完了したら2番目の' 'Future''を実行します。 – SergeiK
@ SaschaKolbergの提案に従い、 'first'と' second'の両方を 'val'ではなく' def'と定義すると、 'first.flatmap(_ => second)'は2つの先物を順番に順番に完了します。 (最初のものを 'def'として定義する必要はあまりありませんが、対称性のために最初は' def'で、最初のものは 'Future.successful(...)'を再実行します)。 –