最近,我們開始使用play 2.2
。之前我們正在玩2.1.3
。 在play 2.2
它說Akka.future
和異步方法被視爲已棄用。另外,當我們試圖通過循環運行下面的代碼片段fetchSample()
時,需要更多時間才能完成play 2.2
。播放幀的工作2.2如何併發執行
那麼我們如何才能用最新的代碼替換下面的棄用代碼呢?
private static Promise<SampleDBResponseBean> fetchSample(
final Document sampleDoc) throws Exception {
Promise<SampleBean> promiseOfSampleJson = Akka.future(
new Callable<SampleBean>() {
public SampleBean call() throws Exception
{
return doSomeCalc(sampleDoc);
}
});
}
private Result getAsyncResult(final SampleResponseBean sampleDbResponseBean) {
List<F.Promise<? extends SampleDBResponseBean>> promiseList = sampleDbResponseBean
.getSampleHelperList();
Promise<List<SampleDBResponseBean>> promiseJsonObjLists = Promise
.sequence(promiseList);
return async(
promiseJsonObjLists.map(
new Function<List<SampleDBResponseBean>, Result>() {
public Result apply(List<SampleDBResponseBean> sampleList) {
SampleResponseBean sampleResponseBean = new SampleResponseBean();
sampleResponseBean.setStatus("success");
sampleResponseBean.setSampleList(sampleList);
JsonNode jsNodeResponse = Json.toJson(sampleResponseBean);
return ok(jsNodeResponse);
}
}));
}
我搜查了很多地方沒有看到任何解決方案。與2.1.3
比較時,問題會影響我們的代碼性能。
任何想法如何在play 2.2
中實現上述2種方法的棄用方法?
嗨,感謝您的回覆。但我的疑問是http://www.playframework.com/documentation/2.2.x/Migration22他們仍然在描述有關Akka.future事件,儘管它不推薦使用,所以我們可以在哪裏獲得Promise.promise的示例代碼?我的要求是我有一個循環,每次從循環做一些計算。每次計算都需要一些時間。所以我需要同時執行計算。如果你正在爲此分享任何樣本代碼,這將對我們有很大幫助。謝謝 – KingDileep
嗨,James,我們可以運行concurent執行,示例代碼如下給出下面的方法是從一個循環調用並執行同時在遊戲2.2 ....公開承諾 getRandom(){ \t \t無極隨機= Promise.promise(新Function0 (){ \t \t \t公共雙人適用(){ \t \t \t \t的System.out .println(「apply」); \t \t \t \t t ry { \t \t \t \t \t主題。睡眠(5000); \t \t \t \t}趕上(InterruptedException的發送){ \t \t \t \t \t // TODO自動生成的catch程序塊 \t \t \t \t \t e.printStackTrace(); \t \t \t \t} \t \t \t \t返回的Math.random(); \t \t \t} \t \t}); \t \t return random; \t} –
KingDileep