Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala期货的异常处理_Scala_Future - Fatal编程技术网

scala期货的异常处理

scala期货的异常处理,scala,future,Scala,Future,我对Scala期货有一个问题。我有一个函数,它有两个参数:x:Future[Int]和y:Future[Int] 函数应返回一个future,该future以以下方式完成: 值x如果x成功完成 如果x失败且y成功完成,则y的值 如果x失败且y失败,则y失败的异常 我似乎不知道该怎么做 该守则目前: def myFunction(x: Future[Int], y: Future[Int]): Future[Int] = { x.onSuccess { case result =&

我对Scala期货有一个问题。我有一个函数,它有两个参数:x:Future[Int]和y:Future[Int]

函数应返回一个future,该future以以下方式完成:

  • 值x如果x成功完成
  • 如果x失败且y成功完成,则y的值
  • 如果x失败且y失败,则y失败的异常
我似乎不知道该怎么做

该守则目前:

def myFunction(x: Future[Int], y: Future[Int]): Future[Int] = {
  x.onSuccess {
    case result => return Future(result)
  }
  x.onFailure {
    case e => 
      y.onSuccess {
        case res => return Future(res)
      }
      y.onFailure {
        case f => throw f
      }
  }
}
简单地说:

x.recoverWith { case _ => y }
简单地说:

x.recoverWith { case _ => y }

谢谢,这正是我需要的!谢谢,这正是我需要的!