2016-11-11 78 views
0

颗粒状方法假设我有一个阿卡演员三种方法,我需要从一个演员的客户端调用:调用在阿卡

class MyActor extends Actor { 
    def receive = { 
    case req1: Request1 => sender ! method1() 
    case req2: Request2 => sender ! method2() 
    case req3: Request3 => sender ! method3() 
    } 
} 

我需要调用不同的组合使用这些方法,例如:

方法1,方法2

方法3

方法1,方法2,方法3

我可以在客户端的操作方法来调用method1

def invokeMethod1() { 
     val system = ActorSystem("system") 
     implicit val timeout = Timeout(120 seconds) 
     val actor = system.actorOf(Props[MyActor], name = "myactor") 
     val future = actor ? Request1 
     val result = Await.result(future, timeout.duration) 
} 

什么是调用不同的组合方法,最好的策略是什么?我应该有invokeMethod1,invokeMethod2invokeMethod3(注意每个人初始化演员系统)?或者我应该在演员身上结合使用方法,例如method1and2?有没有其他的首选方式?

回答

-1

我建议使用用于循环,

def invokeMetod1:Future[Int] = ??? 
    def invokeMetod2:Future[Int] = ??? 
    def invokeMetod3:Future[Int] = ??? 
    val a = 
    for{ 
     _1 <- invokeMetod1 
     _3 <- invokeMetod3 
     _2 <- invokeMetod2 
    }yield 
     _1 + _2 + _3 

它可以顺序执行(invokeMetod1然后invokeMetod3然后invokeMetod2)