我有一个函数将另一个函数的结果包装在 Promise 中。我想将其推广为电梯功能,以便我可以在其他地方重新使用它。以下是原始定义:
val abc = Promise[MyType]()
try {
val suck = abc.success(someOtherFunction(intParam1, intParam2))
} catch {
case ex: Exception => p.failure(ex)
}
所以我最终做了以下事情:
def myLiftFunc[X](x: X) (op: => X): Promise[X] = {
val p = Promise[X]()
try {
p.success(op)
} catch {
case NonFatal(ex) =>
p.failure(ex)
}
p
}
我怎样才能重复使用这个?我的意思是,我传入的第二个参数应该是一个 thunk,这样我就可以传入任何函数体,而不管函数体需要什么参数!
当我将提升的功能称为:
myLiftFunc(someOtherFunction(intParam1, intParam2))
这是类型Int => Promise[Int]
,其中someOtherFunction
返回一个Int
. 我只想要Promise[Int]
我打电话的时候myLiftFunc
!