好的,所以我对返回 Akka Futures 的函数进行了一系列调用,并且我通过使用 flatMap 和 map 将它们链接起来,如下所示:
doAsyncCall(..).flatMap { res1 =>
doAsyncCall2(..).flatMap { res2 =>
doAsyncCall3(..).map { res3 =>
res
}
}
}
它可以分布在不同的函数调用中。现在每个 doAsyncCallX 调用都返回一个 Future[Result],我希望能够组合这些结果,将它们传递到链上,直到最后我可以返回链中所有结果的组合结果。
为此,我考虑让每个 doAsyncCallX 接收前一个结果的隐式参数,并将获得的结果与前一个结果结合起来。问题是,如果不使用像这样的隐式 val 乱扔我的库的使用,我就看不到这样做的方法:
doAsyncCall(..).flatMap { res1 =>
implicit val implicitRes1 = res1
doAsyncCall2(..).flatMap { res2 =>
implicit val implicitRes2 = res2
doAsyncCall3(..).map { res3 =>
res
}
}
}
我想做的是能够拦截 flatMap 的应用,以确保之前的响应作为下一个 doAsyncCallX 调用的隐式参数正确传递。关于如何做到这一点的任何想法?