好的,所以我对返回Akka Futures的函数进行了一系列调用,并且我通过使用flatMap和map将它们链接起来,如下所示:
doAsyncCall(..).flatMap { res1 =>
doAsyncCall2(..).flatMap { res2 =>
doAsyncCall3(..).map { res3 =>
res
}
}
}
其可以分布在不同的函数调用中。现在,这些doAsyncCallX调用中的每一个都返回一个未来的[Result],我希望能够合成这些结果,在链上传递它们,直到最后我可以返回链中所有结果的合成结果。
为此,我考虑让每个doAsyncCallX接收前一个结果的隐式参数,并将获得的结果与前一个相结合。问题是,我看不到一种不使用隐式VAL的方法来实现这一点,如下所示:
doAsyncCall(..).flatMap { res1 =>
implicit val implicitRes1 = res1
doAsyncCall2(..).flatMap { res2 =>
implicit val implicitRes2 = res2
doAsyncCall3(..).map { res3 =>
res
}
}
}
我想做的是能够截获平面图的应用程序,以确保之前的响应作为下一个doAsyncCallX调用的隐式参数正确传递。关于如何完成此操作的任何想法?
也许我遗漏了什么,但是有理由使用隐含词吗?
for(res1 <- doAsyncCall1(..);
res2 <- doAsyncCall2(res1);
res3 <- doAsyncCall3(res2)) yield(res3)
如果您需要返回由多个中间结果组成的结果,请更改yield以产生不同的结果,可能是一个元组,如< code>yield((res1,res2,res3))。其结果类似于< code>Future[(Result1,Result2,Result3)]
拦截文件 bp CreateFileA 创建或打开文件 (32位) bp OpenFile 打开文件 (32位) bp ReadFile 读文件 (32位) bp WriteFile 写文件 (32位) bp GetPrivateProfileStringA (ini文件)
拦截时间 bp GetLocalTime 获取本地时间 bp GetSystemTime 获取系统时间 bp GetFileTime 获取文件时间 bp GetTickCount 获得自系统成功启动以来所经历的毫秒数 bp GetCurrentTime 获取当前时间(16位) bp SetTimer 创建定时器 bp TimerProc 定时器超时回调函数
拦截窗口 bp CreateWindow 创建窗口 bp CreateWindowEx(A) 创建窗口 bp ShowWindow 显示窗口 bp UpdateWindow 更新窗口 bp GetWindowText(A) 获取窗口文本
拦截注册表 bp RegOpenKey(A) 打开子健 bp RegOpenKeyEx 打开子健 bp RegQueryValue(A) 查找子健 bp RegQueryValueEx 查找子健 bp RegSetValue(A) 设置子健 bp RegSetValueEx(A) 设置子健
拦截消息框 bp MessageBox(A) 创建消息框 bp MessageBoxExA 创建消息框 bp MessageBoxIndirect(A) 创建定制消息框
拦截驱动器 bp GetDriveTypeA 获取磁盘驱动器类型 bp GetLogicalDrives 获取逻辑驱动器符号 bp GetLogicalDriveStringsA 获取当前所有逻辑驱动器的根驱动器路径