在Scala中,Future有一种救援函数(rescue function),接受一个PartialFunction作为参数。如果Future成功解析出响应,则跳过此代码;但如果失败,则调用该函数。
我想简单地将这个PartialFunction包装在一个代理(proxy)中,该代理始终执行写入统计计数器的代码。起初,我认为只需创建另一个PartialFunction即可,但很快意识到这不适用于isDefined和apply,因为我希望它每次都被调用。
我如何代理这个PartialFunction,以便在Future出现异常时始终调用我的代码?
我想简单地将这个PartialFunction包装在一个代理(proxy)中,该代理始终执行写入统计计数器的代码。起初,我认为只需创建另一个PartialFunction即可,但很快意识到这不适用于isDefined和apply,因为我希望它每次都被调用。
我如何代理这个PartialFunction,以便在Future出现异常时始终调用我的代码?
onFailure
回调函数呢? - Michael ZajacandThen
也是一个不错的选择,因为它是一个组合器,而onComplete
只返回一个Unit
。你可以构建一个Future
工厂,总是为其添加一个andThen
来记录失败日志。 - cmbaxter