1
進出口使用播放和擁有,我想要做的兩件事情的操作: -嵌套期貨在玩動作
- 首先檢查我的緩存值
- 其次,調用與價值的網絡服務
由於WS API返回Future
,我使用的是Action.async
。
我的Redis緩存模塊還返回Future
。
假設我對可能長時間運行的任務適當地使用了另一個ExecutionContext。
問:有人可以通過以下步驟確認我是否在正確的軌道上。我知道我沒有滿足以下例外情況 - 只是爲了簡潔而保持簡單。
def token = Action.async { implicit request =>
// 1. Get Future for read on cache
val cacheFuture = scala.concurrent.Future {
cache.get[String](id)
}
// 2. Map inside cache Future to call web service
cacheFuture.map { result =>
WS.url(url).withQueryString("id" -> result).get().map { response =>
// process response
Ok(responseData)
}
}
}
我擔心的是,這可能不是做事情的最有效的方式,因爲我認爲不同的線程可以處理完成每一個期貨的任務。
任何建議更好的方法,不勝感激。
好cchantep感謝您的意見。如果能夠幫助解決我的問題,我會在文檔中進一步挖掘並回來。 – JamieP