Play framework处理异步结果
来源:互联网 发布:js高级函数 编辑:程序博客网 时间:2024/06/02 05:38
什么是异步结果?
到现在为止,我们已经能够将计算结果直接发送到Web客户机了。情况并非总是如此,结果可能取决于结果的计算或长Web服务调用。
因为Play工作的方式,Action代码必须尽可能的快,那么,如果我们还不能计算结果,我们应该从action中返回什么呢?我们应该返回一个结果的承诺。
一个 Promise<Result>最终将以类型结果的值返回,使用Promise<Result>代替通用的Result,我们可以迅速的从我们的Action中返回而不做任何的阻塞,Play承诺兑现后,立即为结果服务。
在等待响应时,Web客户机将被阻塞,但服务器上不会阻塞任何东西,服务器资源可用于服务其他客户机。
如何创建Promise<Result>
创建一个Promise<Result>我们首先需要另外一个承诺,这个承诺会给我们计算结果所需的实际价值:
Promise<Double> promiseOfPIValue = computePIAsynchronously();Promise<Result> promiseOfResult = promiseOfPIValue.map( new Function<Double,Result>() { public Result apply(Double pi) { return ok("PI value computed: " + pi); } });
注意:在使用java编写功能成分此刻是非常复杂的,但应该更好时,java支持lambda符号。Java异步API给你提供了一个Promise,这种情况是当你正在使用play.libs.ws API调用外部Web服务,或者如果你是使用Akka 进行异步任务调度任务或者与actor沟通使用play.libs.Akka
.。
一个简单的方法去执行一个异步代码块和获得承诺去使用promise()帮助者。
Promise<Integer> promiseOfInt = Promise.promise( new Function0<Integer>() { public Integer apply() { return intensiveComputation(); } });
到现在为止,我们一直在返回结果。要发送异步结果,我们的操作需要返回一个Promise<Result>.public static Promise<Result> index() { Promise<Integer> promiseOfInt = Promise.promise( new Function0<Integer>() { public Integer apply() { return intensiveComputation(); } } ); return promiseOfInt.map( new Function<Integer, Result>() { public Result apply(Integer i) { return ok("Got result: " + i); } } );}
阅读全文
0 0
- Play framework处理异步结果
- Play FrameWork后台使用异步操作
- Play Framework 的请求处理流程
- Play framework 浅谈 之请求处理流程
- [Play Framework]Manipulating Results——操作结果
- play framework
- play framework
- play framework
- Play Framework
- play framework
- play framework
- play Framework play json
- play framework学习(二) Play framework 1.2.3 Jobs定时任务、异步任务、引导任务、触发任务、关闭任务
- Play framework基本概念、请求处理流程、开发生命周期
- Android FrameWork 之异步消息处理线程
- 微信支付--异步处理支付结果
- 处理异步提交的时候返回结果
- promise加箭头函数处理异步结果
- POJ2387 Til the Cows Come Home
- [python]按key1分组后,计算data1,data2的统计信息并附加到原始表格中
- hihocoder1143(骨牌覆盖,1*2铺2*n)
- 【bzoj1672】[Usaco2005 Dec]Cleaning Shifts 清理牛棚
- 利用python opencv实现图像自适应二值化
- Play framework处理异步结果
- 464. Can I Win
- CSS字体乱码
- 算法竞赛入门经典 UVa489Hangman Judge
- java基础之面向对象封装
- MR合并小文件
- linux下安装配置jira
- Linux 查找文件中匹配指定模式的行
- for循环判定质数合数