我正在使用我的网络服务的远程RPC,我不想在我的代码中创建任何委托与绑定其他东西。我想编写伪异步代码。像这样:
await (MyServer->RemoteMethod(parameter_1, parameter_2),
[=] (int32 return_value_1, int32 return_value_2) {
UE_LOG(MyLog, Log, TEXT("RemoteMethod called with result %i %i"), return_value_1, return_value_2);
});
我对最新C ++版本的函数式编程不太强大。
但我知道有std::function
之类的东西。这可以帮助我吗?
此外,我需要代码必须是跨平台的。
答案 0 :(得分:3)
您所描述的内容不是async
- await
,您可以写下:
std::pair<int32, int32> return_values = await MyServer->RemoteMethod(parameter_1, parameter_2);
UE_LOG(MyLog, Log, TEXT("RemoteMethod called with result %i %i"), return_values.first, return_values.second);
我相信这个功能计划在将来的C ++版本中使用。
您要描述的是延续,您可以使用boost::future
:
boost::future<std::pair<int32, int32>> return_values_future = MyServer->RemoteMethod(parameter_1, parameter_2);
return_values_future.then([=](boost::future<std::pair<int32, int32>> fut) {
UE_LOG(MyLog, Log, TEXT("RemoteMethod called with result %i %i"), fut.get().first, fut.get().second);
});