如何通过异步回调实现未来

How to implement a future with an asynchronous call back

假设我有一个 api returns 其结果异步回调如下:

def myService(callback: String => Unit)

我想在以后包装实现:

def callService: Future[String]

将此回调与 callService 方法返回的未来联系起来的最佳方式是什么?

def callService = Future {

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

您可以使用 Promise:

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

免责声明:我没有编译这段代码,一些方法名称可能不同,但就是这样。