Open vsuharnikov opened 8 years ago
Example:
import moorka._ import scala.concurrent._ import scala.concurrent.duration._ import scala.concurrent.ExecutionContext.Implicits.global import java.util.{Timer, TimerTask} import scala.concurrent.Promise val timer = new Timer(true) // === Essence def fsm = FSM(0) { case 5 ⇒ Dummy case x ⇒ after(1 second).toRx.map { _ ⇒ println(s"x: $x") x + 1 } } // Will not print anything fsm once println // Will print "0" fsm flatMap { x ⇒ println(x) Killer } // === /Essence def after(timeout: FiniteDuration): Future[Unit] = { val p = Promise[Unit]() val task = new TimerTask { override def run(): Unit = { p.success(()) } } timer.schedule(task, timeout.toMillis) p.future }
Example: