2017-10-06 4 views
0

Hy!プレイフレームワークハンドルFuture [アクション]

私はアクションを返す2つのコントローラ関数を持っています。

def asd: Future[EssentialAction] = { 
    Future(true).map{ bool => 
    if(bool){ 
     replace(5,"asd") 
    } else { 
     replace(6,"asd") 
    } 
    } 
} 

をしかし、ルータが将来を処理することはできません。このコントローラはデシベルfuncを使用しているときに私がかなったように取得

def replace(i: Int, s:String): EssentialAction = ??? 
def asd: EssentialAction = { 
    if(true){ 
     replace(5,"asd") 
    } else { 
     replace(6,"asd") 
    } 
} 

しかし:私のようなこれらのコントローラのSTHの間で選択され、別のコントローラを持っています?[EssentialAction] :(私は未来の[アクション]コントローラ内部だけのアクションに再ラップするにはどうすればよい

答えて

1

このコードはコンパイルされます。

package controllers 

import javax.inject._ 

import akka.stream.Materializer 
import play.api.mvc._ 

import scala.concurrent.ExecutionContext.Implicits.global 
import scala.concurrent.Future 

@Singleton 
class TestController @Inject()(cc: ControllerComponents)(implicit 
    val mat: Materializer) extends AbstractController(cc) { 

    def index = Action.async { request => 
    asd.flatMap(_.apply(request).run()) 
    } 

    def replace(i: Int, s:String): EssentialAction = ??? 

    def asd: Future[EssentialAction] = { 
    Future(true).map{ bool => 
     if(bool){ 
     replace(5,"asd") 
     } else { 
     replace(6,"asd") 
     } 
    } 
    } 
} 
+1

最後に.run()...私はsooo closeだった:Dありがとう! – tg44

+0

期待どおりに動作しないいくつかの検証が必要...この修正の後、いくつかのテストが失敗しました:( – tg44

関連する問題