Awaiting alternatives for asynchronous operation?
denyshorman opened this issue · 1 comments
denyshorman commented
What do you think about providing alternatives for awaiting asynchronous operation?
Typical async/await code looks like that:
async {
val v1 = await(Db.query("select 1").fetchOne[Int])
val v2 = await(Db.query("select 2").fetchOne[Int])
v1 + v2
}It would great to have a choise how to await. For example, you can await Future[T] using prefix operator ! or postfix operator await.
Awaiting with prefix ! operator:
async {
val v1 = !Db.query("select 1").fetchOne[Int]
val v2 = !Db.query("select 2").fetchOne[Int]
v1 + v2
}Awaiting with postfix await operator:
async {
val v1 = Db.query("select 1").fetchOne[Int].await
val v2 = Db.query("select 2").fetchOne[Int].await
v1 + v2
}and resulting code looks a little bit shorter without parentheses.
What do you think about this idea ?
retronym commented
I'd rather not provide more than one way to do this in the library itself, but you are able and welcome to introduce a macro into your own project that expands to the standard await idiom. In fact, 2014-era @retronym demoed such a thing in another ticket here 😄