私はそれを上書きすることができる外部の将来の操作を持っています。私はそれを包み込み、プロミスの閉鎖によって完成させたいと思う。しかし私は他の未来の中でその未来を完了できませんでした。例えば:他の将来の未来を完了
import scala.concurrent.{Future, Promise}
import scala.util.{Failure, Success}
import scala.concurrent.ExecutionContext.Implicits.global
def foo():Future[String] = {
val p = Promise[String]()
channel.addListener(new ChannelFutureListener[IoReadFuture] {
override def operationComplete(future: IoReadFuture): Unit = {
p.success("hello")}
}
p.future
}
val x = foo()
x: scala.concurrent.Future[String] = List()
x.onComplete{
case Success(msg) => println(s"$msg world")
case Failure(e) => println(e.getMessage)
}
res1: Unit =()
はをブロックせずにことを行うための慣用的な方法は何ですか?
を実行するためのいくつかのコードを待つ非ブロッキングの方法です私は申し訳ありませんが、私はあなたがスリープ状態に、現在のスレッドの原因になっているので、の質問 – Jatin
を理解していませんでした。 –
@SarveshKumarSinghは間違った文です。 sleepは 'Future {:=>}'ブロック内にあります。それは別のスレッドで実行されます – Jatin