Ajax响应等待未来(scala)

时间:2016-09-17 17:24:47

标签: ajax scala future scalatra

如果我在路由器的帖子(" /某些")路径中有一个Future [A]作为结果(最后一行),则Ajax客户端无法获得响应并超过超时。等待不起作用。未来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)
}

1 个答案:

答案 0 :(得分:0)

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

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