首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一直调用回调,直到通过回调接收到特定值为止。

一直调用回调,直到通过回调接收到特定值为止。
EN

Stack Overflow用户
提问于 2021-06-08 04:32:00
回答 1查看 52关注 0票数 0

我有一个回调函数,它提供了一些数据。

代码语言:javascript
运行
复制
callback([](int check) {
});

我想一直调用这个回调函数,直到check的返回值为0。我该怎么做呢?回调函数需要一些时间来发送数据。如果我通常使用循环,则在等待第一个回调的结果时,它会多次调用回调。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-08 17:37:58

如果callback同步执行回调(并假定它接受任何可调用),则只需使用捕获:

代码语言:javascript
运行
复制
bool go;
do callback([&go](int check) {go=check;}); while(go);

或者,如果callback在另一个线程中执行回调,则可以使用std::promise“撤消”并发。

代码语言:javascript
运行
复制
while([] {
    std::promise<bool> p;
    callback([&p](int check) {p.set_value(check);});
    return p.get_future().get();
  }());

这里的包装器lambda允许我们避免再次声明go,只是为了正常分配给它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67881434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档