【发布时间】:2021-01-18 09:04:02
【问题描述】:
我有多个std::functions 在我的应用程序的主线程(而不是不同的线程)上调用(作为异步 HTTP 请求的结果),例如:
namespace model { struct Order{}; struct Trade{};}
std::function<void (std::string)> func1 = [](std::string http_answer)
{
std::vector<model::Order> orders = ParseOrders(http_answer);
std::cout << "Fetched " << orders.size() << " open/closed orders.");
}
std::function<void (std::string)> func2 = [](std::string http_answer)
{
std::vector<model::Trade> trades = ParseTrades(http_answer);
std::cout << "Fetched " << trades.size() << " trades.");
}
当func1 和func2 都解析了HTTP 答案时,如何调用process_result?
auto process_result = [](std::vector<model::Order> orders, std::vector<model::Trades> trades)
{
std::cout << "Matching orders and trades.";
};
有co_await 或类似的解决方案吗?
【问题讨论】:
-
func1和func2的返回类型与process_results的参数不匹配。您缺少显示它们如何获取参数的代码。 -
@Caleth 我更正了代码,
func1和func2在 HTTP 请求完成并解析文本响应时被调用。当订单和交易都被解析时,我需要调用process_result。