首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是boost::promise<T>的Qt?

什么是boost::promise<T>的Qt?
EN

Stack Overflow用户
提问于 2012-06-04 06:09:45
回答 2查看 2.4K关注 0票数 5

我看到Qt有直接模拟boost::futurefuture类,但是boost::promise的qt是什么呢

EN

回答 2

Stack Overflow用户

发布于 2014-03-06 01:59:08

按照公认的答案构建我自己的QFuture对我来说不起作用。起初,它看起来像是在工作,但在我的测试中,我意识到它并没有阻止调用者。哇哦!因此,我进一步研究了代码,发现QFutureInterface是您想要用作“promise”的东西。与boost::promise一样,QFutureInterface是您在工作线程中与之交互的对象,它是QFutures的工厂。

下面是我在Qt4.8中所做的(不确定这是否适用于以后的版本)。

代码语言:javascript
复制
QFutureInterface<QVariant> promise;
promise.reportStarted();
...
promise.reportResult(someVariant);
promise.reportFinished();

然后在客户机线程中,假设您可以访问QFutureInterface 'promise‘

代码语言:javascript
复制
QVariant result = promise.future().result();

future()调用是一个工厂方法,用于创建绑定到QFutureInterface的QFuture。如果需要,您应该能够获取QFuture并稍后在其上调用result()

票数 10
EN

Stack Overflow用户

发布于 2018-09-26 16:08:12

Qt的承诺现在也可以通过QML/JavaScript btw:https://v-play.net/updates/release-2-18-1-javascript-promises-for-rest-services-tinder-swipe-material-cards-qml-qsortfilterproxymodel-qml-youtube-player获得

下面是一些示例代码:

代码语言:javascript
复制
import VPlayApps 1.0
import QtQuick 2.0

App {
  Component.onCompleted: {
    var p1 = Promise.resolve(3);
    var p2 = 1337;
    var p3 = HttpRequest
    .get("http://httpbin.org/get")
    .then(function(resp) {
      return resp.body;
    });

    var p4 = Promise.all([p1, p2, p3]);

    p4.then(function(values) {
      console.log(values[0]); // 3
      console.log(values[1]); // 1337
      console.log(values[2]); // resp.body
    });
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10874311

复制
相关文章

相似问题

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