arrow-fx / arrow.fx.typeclasses / Concurrent / Promise
open fun <A> Promise(): Kind<F,
Promise
<F, A>>
Create a pure Promise that is empty and can be filled exactly once.
import arrow.Kind
import arrow.fx.*
import arrow.fx.extensions.io.concurrent.concurrent
import arrow.fx.typeclasses.Concurrent
import arrow.fx.typeclasses.seconds
fun main(args: Array<String>) {
fun <F> Concurrent<F>.promiseExample(): Kind<F, Unit> =
//sampleStart
fx.concurrent {
val promise = !Promise<String>()
val (join, cancel) = !sleep(1.seconds)
.followedBy(promise.complete("Hello World!"))
.fork()
val message = !join
message
}
//sampleEnd
IO.concurrent().promiseExample()
.fix().unsafeRunSync()
}
See Also
Do you like Arrow?
✖