在电梯中,我有一个页面接受一些要上传的文件,然后处理文件(大约需要一分钟+)我不想让用户等待整整一分钟只是为了看到另一个页面,所以我决定将处理工作放到Future
对象中。我的最终目标是在处理完成后向用户发送指向结果页面的链接。
以下是我的代码的要点:
Futures.future {
doLongLastingProcessing
val linkXml = makeLinkToResults
println("Hey I'm done!")
S.notice(linkXml)
}
我得到的问题是,在Future中完成的任何S相关的东西似乎都不起作用。工作结束了,我在控制台看到了“嘿,我已经完成了”,但没有注意到。
如何向用户收到“完成”通知(即使他们已离开上传页面)?
答案 0 :(得分:3)
您应该查看Lift的CometActors并向Future发送相应的CometActor消息。或者您可能只想完全放弃Future,只使用Actors。
请注意,有一些陷阱(例如not having access to S
),但听起来你的CometActor只能返回正常的响应。我刚检查了维基,显然你确实有access to S.notice
within your CometActor。
答案 1 :(得分:0)
这篇文章展示了如何使用彗星演员post
来做你想问的事