complete(OK,"some result")
doSomeStuff()
我需要在回复回复后做一些动作。如何做到?
答案 0 :(得分:0)
您可以使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
或Actor
在单独的线程上运行该操作,以释放处理程序线程,以便它可以处理其他请求。
通常您会回复with Future
,表明处理尚未完成。
答案 1 :(得分:0)
complete
指令只是ctx => ctx.complete
的快捷方式,喷射路由只是从HttpRequest到Unit HttpRequest => Unit
的函数,因此您可以创建这样的路径:
val myRoute = get {
path("resource") { ctx =>
ctx.complete(OK, "some result")
doSomeStuff()
}
}
一个重要的事情是doSomeStuff()
函数在路由处理程序actor上执行,而actor 在运行时不会处理任何其他请求。因此,如果长时间运行,向一些工作者发送消息来做实际工作是明智的。例如:
val myRoute = get {
path("resource") { ctx =>
ctx.complete(OK, "some result")
workerActor ! DoSomeStuff
}
}