Represent whether an async result is ready.

async-status An async operation usually has a state before its value is available. This page models that state with a boolean and a scalar fallback.

Async Status

completed
AsyncStatus.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val completed = true
    val result = 42
    val status = if (completed) "completed" else "pending"
    val visible = if (completed) result else 0

    println("status=" + status)
    println("visible=" + visible)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val completed = false
    val result = 42
    val status = if (completed) "completed" else "pending"
    val visible = if (completed) result else 0

    println("status=" + status)
    println("visible=" + visible)
  }
}
  1. completed ← true, result ← 42, status ← completed, visible ← 42

    1object Main {2  def main(args: Array[String]): Unit = {3    val completed→ true = true //@completed=false4    val result→ 42 = 425    val status→ completed = if (completedtrue) "completed" else "pending"6    val visible→ 42 = if (completedtrue) result42 else 078    println("status=" + statuscompleted)9    println("visible=" + visible42)10  }11}
    outputstatus=completed
    visible=42
  1. completed ← false, result ← 42, status ← pending, visible ← 0

    1object Main {2  def main(args: Array[String]): Unit = {3    val completed→ false = false4    val result→ 42 = 425    val status→ pending = if (completedfalse) "completed" else "pending"6    val visible→ 0 = if (completedfalse) result42 else 078    println("status=" + statuspending)9    println("visible=" + visible0)10  }11}
    outputstatus=pending
    visible=0