Ajax 响应等待未来 (scala)

Ajax response wait for future (scala)

如果我在路由器的 post("/some") 路径中有一个 Future[A] 作为结果(最后一行),Ajax 客户端无法获得响应并且超过超时。等待不起作用。 Future onComplete/onSuccess {...} 工作正常,但对于服务器,那么如何将其作为响应转换为客户端? (Scalatra 框架)

服务器:

post("/stations/test") {
  Future[Int] {
    // parse jsonData ...
    Thread.sleep(3000)
    1
  }.onComplete { x =>
    // do something on server ...
  }
}

客户:

@JSExport
def testFuture() = {
  val request = Ajax.post("/stations/test", jsonData)
}

onCompletereturnsUnit。但是,您需要将正确的响应从服务器发送到客户端。在未来使用 map 来创建响应。

post("/stations/test") {
  Future[Int] {
    // parse jsonData ...
    Thread.sleep(3000)
    1
  }.map { data =>
    Response(data)
  }
}