如何使用异步回调实现未来

时间:2015-01-19 17:56:32

标签: scala asynchronous akka

假设我有一个api,它在回调中异步返回其结果,如下所示:

def myService(callback: String => Unit)

我想在未来包装实现:

def callService: Future[String]

将此回调与callService方法返回的未来连接的最佳方法是什么?

def callService = Future {

  myService { res: String =>
    // How to map the result to the future???
  }
}

1 个答案:

答案 0 :(得分:3)

您可以使用Promise

def callService = Future {
  val p = Promise[String]
  myService { res: String =>
    p.success(res)
  }
  p.future
}

免责声明:我没有编译此代码,某些方法名称可能不同,但这就是主意。