Ответ Ajax, ожидание будущего (scala)
Если у меня есть Future[A] в результате (последняя строка) в пути поста ("/some") маршрутизатора, клиент Ajax не сможет получить ответ и превысит время ожидания. Жду не работает. Будущее onComplete/onSuccess {...} работает нормально, но для сервера, так как его перевести клиенту в ответ? (Скалатра рамки)
сервер:
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 ответ
Решение
onComplete
возвращается Unit
, Но вам нужен правильный ответ для отправки с сервера на клиент. использование map
на будущее, чтобы создать ответ.
post("/stations/test") {
Future[Int] {
// parse jsonData ...
Thread.sleep(3000)
1
}.map { data =>
Response(data)
}
}