Run After a Delay

object Example:

  val rightNow: zio.Task[java.util.Date] =
    for
      now <- zio.ZIO.attempt(new java.util.Date())
      _ <- zio.ZIO.attempt(println(now))
    yield now

  val inABit: zio.ZIO[Any, Throwable, java.util.Date] =
    import zio.durationInt
    rightNow.delay(1.second)

Usage

object Main extends zio.ZIOAppDefault:

  override def run: zio.ZIO[Any, Throwable, java.util.Date] =
    Example.inABit

Demo

This file is literate Scala, and can be run using Codedown:

$ curl https://earldouglas.com/scala/zio/delay.md |
  codedown scala |
  scala-cli -q --scala 3.1.3 --dep dev.zio::zio:2.0.0 _.scala
Sun Nov 25 02:47:37 MST 2018