如何将类T对象转换为akka中的Future [T]对象

时间:2017-09-25 15:22:45

标签: scala akka akka-http

我正在尝试用akka和scala做点什么,我是新手。我想将“Any”Future的结果附加到类

中的一个字段中

所以我把名为T的类定义为

class T {
  var a: String =_
  var result = List[Any]= List()
}

现在我有一个接收未来值的变量

var futureResult:Future[Any] = //receives a future value

在一个名为addResult的函数中,它接受一个T对象并返回一个未来的T对象。

def addResult(obj1:T):Future[T] ={
  var obj2:T = new T()
  obj2.a = obj1.a
  obj2.result = obj1.result
  //I want to append results of futureResult into obj2.result when it is completed
  // obj2.result = futureResult :: obj2.result

  return Future(obj2)
}

我必须从流程中调用此函数。

val b = Flow[T].mapAsync[T](1)(addResult(_))

2 个答案:

答案 0 :(得分:1)

您可以像这样更改注释行:

int numb = 50;
int odd;
int even;
while (numb <= 100) {
    if (numb % 2 == 0) {
        even = numb;
        System.out.println(even);
        System.out.print(", ");
        numb++;
    }
    System.out.println("");
    if (numb % 2 != 0) {
        odd = numb;
        System.out.print(odd);
        System.out.print(", ");
        numb++;
    }
}

然后你不需要最后一行。

答案 1 :(得分:1)

首先,正如@ riccardo.cardin所指出的,使用Multiprocessing作为类的名称是非常糟糕的,因为T通常指向泛型。 但是,您可以在T中使用简单的闭包放置任何逻辑,在您的情况下,它看起来像这样:

Future

之后,您可以通过Future { new T("some string", 1 :: 2 :: 3 :: Nil) } flatMapmap组合异步计算,甚至可以将for comprehensive black magiccats结合使用:

|@|

在您的情况下,此转换取决于您的代码逻辑。