scala-async的真实用例?

Eri*_*lun 7 concurrency asynchronous scala future

今天我研究了使用scala-async实现一些非常基本的东西,即一个可能失败的函数的重试循环.

首先,我无法await()在一个try/catch街区中使用; 很好,这是我猜的; 所以我转换函数返回一个Future[Try[T]]代替,当然在正常情况下这是多余的,因为Future[T]已经包含任何异常,但允许我调用isSuccess返回值而不是try/catch.

然后我继续尝试实现循环逻辑.嵌套递归iter()await()不可能的(再次,如预期的那样),因为不能在嵌套函数中使用.while最初带着一个好老去了我,因为我实际上正在尝试一个Future[Try[Unit]]函数,所以我不关心返回值; 然而,一旦我改变Future[Try[Int]]并因此开始关心返回值,我需要保存Try[Int]我从await()通话中退出,以便不仅能够检查它是否isSuccess还返回其内容.但是,一旦我尝试,val ret = await(...)我得到一个错误说:

await must not be used under a by-name argument

所以我的问题是,由于(至少)这3只局限其最后我想说的是极端限制,以至少看似渲染斯卡拉-异步从如精心挑选的例子没用任何现实生活相距代码的程度await(x) + await(y),这个库目前已知的实用应用程序是什么?